从List创建JsonArray

时间:2014-02-20 13:20:22

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


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

JSONArray jsonArray = new JSONArray(list);

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

2 个答案:

答案 0 :(得分:10)

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

我不知道您的列表的外观,但您可以创建一个类似的函数:

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;
}

答案 1 :(得分:0)

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

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;
}