Java将ArrayList转换为JsonElement

4
我想使用这种方法:
json.add("myText", getList(id));

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

那么,我该如何将ArrayList转换为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;
 } 

};

4个回答

4

新的JSON解析器解析新的gson().toJson(getList(id))返回的内容。 - Steve Jiang

1
为了从一个List中获取一个JsonElement,你可以使用JsonTree:
List<String> myList = new ArrayList<>();
jsonObject.add("myList", gson.toJsonTree(myList));

0

你无法将它强制转换,我也看不到使用API方法进行转换的方式。我认为你需要创建自己的方法来将列表转换为数组。

例如:

private JsonElement convertToJsonElement(List<Object> list)

然后像这样调用它:

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

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


我该如何在我的函数中将其转换为JsonElement? 我的方法应该怎么做? - Whitney R.
创建一个新的JsonElement -> 将数据从列表复制到JsonElement中(可能通过JsonElement上的set方法)-> 返回新的json元素 - cowls
我正在尝试这个,但它不起作用: JsonElement jelement = new JsonElement() { private ArrayList<String> list112 = new ArrayList<String>();public ArrayList getList(){ return this.list112; }}; - Whitney R.
我无法理解那段代码,或许你可以将其添加到你的问题中,并以格式化的代码块形式展示。 - cowls

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支持的方式完成它,而不是你想要的方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接