java - 如何使用java创建这个JSONObject?

标签 java json serialization pojo builder

如何使用 java 类和 lombok 的构建器创建以下 json?

我使用了一些json to pojo工具并创建了2个类:Entry.javaTestplan.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
      ]
    }
  ]
}

测试计划.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;
}

我使用以下方法将字符串转换为 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. 创建了测试计划的新方法:
    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);
        }
    

    关于java - 如何使用java创建这个JSONObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55817954/

    相关文章:

    java - Jackson JSON 日期反序列化为时间戳

    c# - 将数据列表添加到 View 状态

    java - 适用于 Android 的 Firebase 实时(在线)数据库的安全性如何?

    java - 解析 Java JSON 时的动态 @JsonSubTypes

    javascript - 使用多个缩略图加载页面的技术 (laravel 5.3)

    c# - System.Serializable 在 Unity 中的 List<MyClass> 上不起作用?

    java - 什么是NullPointerException,我该如何解决?

    java - 将 RuntimeException 作为异常重新抛出

    java - JPA 和 Hibernate 在使用 JSON 的 Spring Rest 中第一次尝试时不会更新一对多关系

    java - Elasticsearch /无痛 : How do I access/sum all values in an object