Java将Arraylist转换为JsonElement

时间:2012-12-18 14:00:42

标签: java ajax json gson

我想使用这种方法:

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

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

那么,我如何在JsonElement中投射一个arraylist?

我测试了这个,但它不起作用:

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

我也测试了这个:

  

JsonElement jelement = new JsonElement(){

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

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

};

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

e.g。

private JsonElement convertToJsonElement(List<Object> list)

然后这样称呼:

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

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

答案 2 :(得分: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支持的方式而不是你想要的方式来帮助你。

答案 3 :(得分:0)

要从JsonElement中提取List,可以使用JsonTree

List<String> myList = new ArrayList<>();
jsonObject.add("myList", gson.toJsonTree(myList));