从List创建JsonArray

问题描述 投票:4回答:2

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

JSONArray jsonArray = new JSONArray(list);

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

java json java-ee java-ee-7
2个回答
10
投票

不幸的是,标准的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;
}

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.