Как создать этот JSONObject, используя Java? - PullRequest
0 голосов
/ 23 апреля 2019

Как мне создать следующий json, используя java-классы и конструктор lombok?

Я использовал json для инструмента pojo и создал 2 класса: Entry.java и Testplan.java, добавил метод для преобразования String json и ему удалось получить объект json: {"suite_id":99,"name":"Some random name"}

Я не понимаю, как создать объект, который будет выглядеть следующим образом:

{
  "name": "System test",
  "entries": [
    {
      "suite_id": 1,
      "name": "Custom run name"
    },
    {
      "suite_id": 1,
      "include_all": false,
      "case_ids": [
        1,
        2,
        3,
        5
      ]
    }
  ]
}

Testplan.java


@Data
@Builder
public class Testplan {

    @JsonProperty("name")
    public String name;
    @JsonProperty("entries")
    public List<Entry> entries = null;
}

Entry.java

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Entry {

    @JsonProperty("suite_id")
    public Integer suiteId;
    @JsonProperty("name")
    public String name;
    @JsonProperty("include_all")
    public Boolean includeAll;
    @JsonProperty("case_ids")
    public List<Integer> caseIds = null;
}

Я конвертирую String в json, используя это:

    public <U> String toJson(U request) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper()
                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        return mapper.writeValueAsString(request);
    }

Вот как я начал создавать объект и застрял:

    public static Entry getRequestTemplate() {
        Entry entry = new Entry();
        entry.setName("Here's some name");
        entry.setSuiteId(16);
        return entry;
    }

Чтобы увидеть, что происходит, я добавил это:

    @Test
    public void showJson() throws JsonProcessingException {
        String json = toJson(getRequestTemplate());
        System.out.println(json);
    }

Я ожидаю, что мне придется объединить эти два класса и создать список case_ids, но я не могу обернуть его вокруг.

1 Ответ

0 голосов
/ 24 апреля 2019

Это сработало:

  1. Создан новый метод Testplan:
    public Testplan kek2() {
        Testplan testplan = Testplan.builder()
                .name("System test")
                .entries(Lists.newArrayList(Entry.builder()
                        .name("Custom run name")
                        .suiteId(1)
                        .includeAll(false)
                        .caseIds(new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)))
                        .build()))
                .build();
        System.out.println(testplan);
        return testplan;
    }
и затем использовал этот метод для преобразования pojo в json:
    protected <U> String toJson(U request) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(request);
    }
...