【问题标题】:Create JsonArray from List从列表创建 JsonArray
【发布时间】:2014-02-20 13:20:22
【问题描述】:


我需要从 JsonObjects 的 java.util.List 创建一个 javax.json.JsonArray 对象(Java EE 7 API)。 以前,在使用 JSON API 时,我只是简单地使用:

JSONArray jsonArray = new JSONArray(list);

但我可以看到 javax.json.JsonArray 中没有等效的构造函数。 有没有一种简单的方法(除了浏览所有列表)来做到这一点?
谢谢

【问题讨论】:

  • javadoc 包含示例...
  • 本例中的list 是什么?
  • 已检查。但是 Javadocs 包含以下示例:JsonArray value = Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("type", "home") .add("number", "212 555-1234")) 。 add(Json.createObjectBuilder() .add("type", "fax") .add("number", "646 555-4567")) .build();这不是我问的 - 我已经有一个 List
  • 我不知道Java中有一个json包。
  • @Sikorski 仅在 Java EE 中

标签: java json jakarta-ee java-ee-7


【解决方案1】:

不幸的是,标准 JsonArrayBuilder 不接受列表作为输入。所以你需要遍历列表。

我不知道您的 List 看起来如何,但您可以创建如下函数:

public JsonArray createJsonArrayFromList(List<Person> list) {
    JsonArray jsonArray = Json.createArrayBuilder();
    for(Person person : list) {
        jsonArray.add(Json.createObjectBuilder()
            .add("firstname", person.getFirstName())
            .add("lastname", person.getLastName()));
    }
    jsonArray.build();
    return jsonArray;
}

【讨论】:

  • 谢谢。看来这是唯一的方法。
【解决方案2】:

如果有人对如何使用 Java 8 Streams 执行此操作感兴趣。同样的代码sn-p:

public JsonArray createJsonArrayFromList(List<Person> list) {
    JsonArray jsonArray = Json.createArrayBuilder();
    list.stream().forEach(person -> jsonArray.add(Json.createObjectBuilder()
            .add("firstname", person.getFirstName())
            .add("lastname", person.getLastName())));
    jsonArray.build();
    return jsonArray;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多