gson Java将数组列表强制转换为JsonElement

vxbzzdmp  于 2022-11-06  发布在  Java
关注(0)|答案(4)|浏览(360)

我想用这个方法:

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

函数getList(id)返回一个数组列表,但是方法json.add会喜欢一个JsonElement。
那么,如何在JsonElement中转换数组列表呢?
我对此进行了测试,但它不起作用:

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

我也测试一下:
JsonElement =新建的JsonElement(){

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

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

};

e37o9pze

e37o9pze1#

gson提供了序列化ArrayList(或任何集合)的方法。

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

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

dgtucam1

dgtucam12#

要从List中得到JsonElement,可以使用JsonTree

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

mwg9r5ms3#

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

private JsonElement convertToJsonElement(List<Object> list)

那就这样叫吧:

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

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

sd2nnvve

sd2nnvve4#

我觉得我们需要退一步来理解你想做什么。
我假设您希望在“myText”和其他对象的数组之间创建一个Map。
为此,您只需调用Gson.toJson(map),其中map保存键myText和作为列表或数组的值。换句话说:

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

String outputJson = Gson.toJson(mapJson);

如果这不是你想要的,我恳求你解释一下你的目标,这样我们就可以帮助你以Gson支持的方式来做,而不是你想要的方式。

相关问题