簡體   English   中英

Java 將 Arraylist 轉換為 JsonElement

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM