如何在java中使用Gson库自动将对象列表转换为JSONArray?

sna*_*ggs 10 java json gson

可以说我有自定义对象的名单如下:ArrayList<GroupItem>这里GroupItem是一些具有类intString变量.

我到目前为止尝试了Gson库,但这并不是我想要的.

ArrayList<GroupItem> groupsList = /* ... */
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(groupsList, new TypeToken<ArrayList<GroupItem>>() {}.getType());

JsonArray jsonArray = element.getAsJsonArray();
Run Code Online (Sandbox Code Playgroud)

我的目标是以JSONArray某种方式得到(org.Json.JSONArray).有任何想法吗?

[编辑]

我的项目是带有基于API的Cordova的Android org.Json.JSONArray

我想写一些通用的方法将实例转换为JSONArray/JSONObject

谢谢,

sna*_*ggs 18

这种方式对我有用:

将所有列表转换为String.

String element = gson.toJson(
                    groupsList,
           new TypeToken<ArrayList<GroupItem>>() {}.getType());
Run Code Online (Sandbox Code Playgroud)

JSONArray从String 创建:

    JSONArray list = new JSONArray(element);
Run Code Online (Sandbox Code Playgroud)

  • 接受的答案返回一个空数组,这是有效的 (3认同)

Bri*_*ach 6

org.jsonAndroid中包含的基础类没有任何与将Java POJO转换为JSON或从JSON转换相关的功能.

如果你有一个class(List<GroupItem>)的列表,你绝对需要将它转换为org.json.JSONArray你有两个选择:

A)使用Gson或Jackson转换为JSON,然后将该JSON解析为JSONArray:

List<GroupItem> list = ...
String json = new Gson().toJson(list);
JSONArray array = new JSONArray(json);
Run Code Online (Sandbox Code Playgroud)

B)编写代码以创建它将包含在Java对象中JSONArrayJSONObjects:

JSONArray array = new JSONArray();
for (GroupItem gi : list)
{
    JSONObject obj = new JSONObject();
    obj.put("fieldName", gi.fieldName);
    obj.put("fieldName2", gi.fieldName2);
    array.put(obj);
}
Run Code Online (Sandbox Code Playgroud)