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

如何使用java中的Gson库将对象列表自动转换为JSONArray?,java,json,gson,Java,Json,Gson,假设我有以下自定义对象列表:ArrayList其中GroupItem是一个具有int和String变量的类 到目前为止,我尝试了Gsonlibrary,但它并不是我想要的 ArrayList<GroupItem> groupsList = /* ... */ Gson gson = new Gson(); JsonElement element = gson.toJsonTree(groupsList, new TypeToken<ArrayList<GroupItem&

假设我有以下自定义对象列表:
ArrayList
其中
GroupItem
是一个具有
int
String
变量的类

到目前为止,我尝试了Gsonlibrary,但它并不是我想要的

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

JsonArray jsonArray = element.getAsJsonArray();
ArrayList groupsList=/**/
Gson Gson=新的Gson();
JsonElement元素=gson.toJsonTree(groupsList,newtypetoken(){}.getType());
JsonArray JsonArray=element.getAsJsonArray();
我的目标是以某种方式获得
JSONArray
(org.Json.JSONArray)。有什么想法吗

[编辑]

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

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


谢谢,

为什么要使用GSON转换为org.json类?也不需要编写任何自定义代码来获得JSONArray。这提供了一种方法

  LinkedList list = new LinkedList();
  list.add("foo");
  list.add(new Integer(100));
  list.add(new Double(1000.21));
  list.add(new Boolean(true));
  list.add(null);
  JSONArray jsonArray = new JSONArray(list);
  System.out.print(jsonArray);

你不需要格森。有一个需要收集的文件,所以只需:

ArrayList<GroupItem> groupsList =... ;
JSONArray JSONArray = new JSONArray(groupsList);
arraylistgroupslist=;
JSONArray JSONArray=新JSONArray(组列表);

这种方式适合我:

将所有列表转换为字符串

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

Android中包含的基于
org.json
的类没有任何与将JavaPOJO转换为json相关的功能

如果您有某个类的列表(
list
),并且您绝对需要将其转换为
org.json.JSONArray
,那么您有两个选择:

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

List<GroupItem> list = ...
String json = new Gson().toJson(list);
JSONArray array = new JSONArray(json);

使用Jackson for JSON to Object或Object to JSON

请参阅下一个链接


我就知道是科尔多瓦!我上周在工作中做了这件事。您不需要gson。列表上不需要泛型。我得到了适当的列表长度,但其中包含null。请参阅我的回答,有一段时间它也会引发堆栈溢出异常。@Ranjitsin您将不会得到任何帮助,因为它会提示您遇到了一个问题。你需要问一个完整的问题。@weston我没有任何问题,但每当我使用List to json数组时,我都会遇到stackoverflow异常,因此我以不同的方式传递对象。接受的答案返回一个空数组,这就行了
List<GroupItem> list = ...
String json = new Gson().toJson(list);
JSONArray array = new JSONArray(json);
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);
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
StringWriter stringWriter = new StringWriter();
objectMapper.writeValue(stringWriter, groupsList );
System.out.println("groupsList JSON is\n"+stringWrite);