4

我想使用这种方法:

json.add("myText", getList(id));

函数 getList(id) 返回一个数组列表,但方法 json.add 想要一个 JsonElement。

那么,如何在 JsonElement 中转换数组列表?

我对此进行了测试,但它不起作用:

json.add("myText", (JsonElement)getList(id));

我也测试了这个:

JsonElement jelement = 新的 JsonElement() {

 private ArrayList<String> list= new ArrayList<String>();

 public ArrayList<String> getList(){ 
     return this.list;
 } 

};

4

4 回答 4

4

com.google.gson 具有序列化 ArrayList(或任何集合)的方法。序列化后,您可以使用 JSONParser 解析字符串:

JSONParser.parse(gson.toJson(getList(id)));

参考:https ://sites.google.com/site/gson/gson-user-guide#TOC-Array-Examples

于 2012-12-18T15:05:16.173 回答
0

你不能转换它,我也看不到用 API 方法转换它的方法。我认为您需要创建自己的方法将列表转换为数组。

例如

private JsonElement convertToJsonElement(List<Object> list)

然后像这样调用它:

json.add("myText", convertToJsonElement(getList(id)));

或者,如果您有权访问该getList方法,则可以将其更改为返回 JsonElement

于 2012-12-18T14:13:23.290 回答
0

我认为我们需要退后一步,了解您要做什么。

我假设您想在“myText”和其他对象数组之间创建映射。

为此,您只需调用 Gson.toJson(map) ,其中 map 将键 myText 和值保存为 List 或数组。换句话说:

Map<String, List<Object>> mapJson = new LinkedHashMap<String, List<Object>>();
mapJson.put("myText", getList(id));

String outputJson = Gson.toJson(mapJson);

如果这不是您想要的,我恳请您解释您的目标,以便我们可以帮助您以 Gson 支持的方式而不是您想要的方式来实现它。

于 2012-12-18T15:03:05.390 回答
0

为了JsonElement摆脱 a List,您可以使用JsonTree

List<String> myList = new ArrayList<>();
jsonObject.add("myList", gson.toJsonTree(myList));
于 2020-12-15T09:42:29.370 回答