我需要从一个JsonObjects的java.util.List中创建一个javax.json.JsonArray对象(Java EE 7 API)。
以前,在使用JSON API时,我通常可以简单地使用以下代码进行操作:
JSONArray jsonArray = new JSONArray(list);
但是我可以看到在javax.json.JsonArray中没有等效的构造函数。有没有简单的方法(除了浏览所有List)来做到这一点?
谢谢
我需要从一个JsonObjects的java.util.List中创建一个javax.json.JsonArray对象(Java EE 7 API)。
以前,在使用JSON API时,我通常可以简单地使用以下代码进行操作:
JSONArray jsonArray = new JSONArray(list);
但是我可以看到在javax.json.JsonArray中没有等效的构造函数。有没有简单的方法(除了浏览所有List)来做到这一点?
谢谢
不幸的是,标准的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;
}
如果有人对如何使用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;
}
list
是什么? - Bex