从Java列表创建JSON字符串数组

时间:2019-06-04 07:36:05

标签: java json


我有一个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的对象类型。 有帮助吗?

2 个答案:

答案 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());

与此同时,您也可以轻松访问数据。