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
Create JsonArray from List
提问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;
}