[英]Java cast Arraylist to JsonElement
我想使用这种方法:
json.add("myText", getList(id));
函数 getList(id) 返回一个数组列表,但方法 json.add 想要一个 JsonElement。
那么,如何在 JsonElement 中投射一个数组列表?
我对此进行了测试,但它不起作用:
json.add("myText", (JsonElement)getList(id));
我也测试这个:
JsonElement jelement = new JsonElement() {
private ArrayList<String> list= new ArrayList<String>(); public ArrayList<String> getList(){ return this.list; }
};
com.google.gson 具有序列化 ArrayList(或任何集合)的方法。 序列化后,您可以使用 JSONParser 解析字符串:
JSONParser.parse(gson.toJson(getList(id)));
参考: https : //sites.google.com/site/gson/gson-user-guide#TOC-Array-Examples
你不能投射它,我看不到用 API 方法转换它的方法。 我认为您需要创建自己的方法来将列表转换为数组。
例如
private JsonElement convertToJsonElement(List<Object> list)
然后像这样调用它:
json.add("myText", convertToJsonElement(getList(id)));
或者,如果您可以访问getList
方法,则可以将其更改为返回 JsonElement
我认为我们需要退后一步,了解您正在尝试做什么。
我假设您想在“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 支持的方式而不是你想要的方式去做。
为了从List
获取JsonElement
,您可以使用JsonTree
:
List<String> myList = new ArrayList<>();
jsonObject.add("myList", gson.toJsonTree(myList));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.