我有一个java.util.List,其中包含要渲染为JSON Array String的Java POJO。例如:
[
{ "name": "abc", "age": 50 },
{ "name": "def", "age": "25" }
];
使用我添加的Java EE JSON Api:
public String createJsonArrayFromList(List<Person> list) {
JsonArrayBuilder jsonArray = Json.createArrayBuilder();
for(Person c : list) {
jsonArray.add(Json.createObjectBuilder()
.add("name", c.getName())
.add("surname", c.getSurname()));
}
JsonArray array =jsonArray.build();
return array.toString();
}
但是,返回的不是JSON String数组而是"org.glassfish.json.JsonArrayBuilderImpl@761c5d2f"
我尝试过:
StringWriter buffer = new StringWriter();
Json.createWriter(buffer).writeObject(array);
但是writeObject需要一个不同于JsonArray的对象类型。 有帮助吗?
答案 0 :(得分:4)
使用writeArray
代替writeObject
:
JsonArray arr = ...;
JsonWriter writer = Json.createWriter(...)
writer.writeArray(arr);
writer.close();
请参见the docs。
答案 1 :(得分:1)
您可以使用Gson库,它可以帮助您更好地工作。
GsonBuilder builder=new GsonBuilder();
Gson gson=builder.create();
List<YourMeberClas> YourList=new ArrayList<>();
JsonElement je = gson.toJsonTree(YourList, new
TypeToken<List<YourMemberClass>>() {
}.getType());
与此同时,您也可以轻松访问数据。