我需要从JsonObjects的java.util.List创建一个 javax.json.JsonArray 对象(Java EE 7 API)。
以前,当我使用JSON API时,我只是简单地使用:
JSONArray jsonArray = new JSONArray(list);
但我可以看到javax.json.JsonArray中没有等效的构造函数。
有没有一种简单的方法(浏览所有列表除外)来做到这一点?
感谢
答案 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;
}