Java 从列表创建 JsonArray

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21909059/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 11:22:35  来源:igfitidea点击:

Create JsonArray from List

javajsonjakarta-eejava-ee-7

提问by user2824073


I'd need to create a javax.json.JsonArrayobject (Java EE 7 API) from a java.util.List of JsonObjects. Formerly, when using JSON API I used to do it simply with:


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

JSONArray jsonArray = new JSONArray(list);

But I can see there's no equivalent constructor in javax.json.JsonArray. Is there a simple way (other than browsing across all the List) to do it ?
Thanks

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

采纳答案by Nicky Tellekamp

Unfortunately the standard JsonArrayBuilder does not take a list as input. So you will need to iterate over the list.

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

I don't know how your List looks but you could make a function like:

我不知道你的 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;
}

回答by StefanHeimberg

If someone is interessted in how to do this with Java 8 Streams. The same code snippet:

如果有人对如何使用 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;
}