我正在尝试使用GSON库将JsonObject转换为String。但是结果输出会多一层父“map”包裹json。请告诉我我做错了什么,为什么会出现父“Map”层?
我什至尝试使用new Gson(). toJson(bean)来隐藏bean;但是输出结果还有一层父“map”包裹了json。
我需要通过使用来满足的条件
1) Mutable object
2) GSON
3) method might handle other object Type
使用以下库的Maven项目:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Java代码如下(示例为只了解不真正的代码,将在T中使用):
List<JSONObject> records = new ArrayList <JSONObject> ();
JSONObject bean = new JSONObject();
bean.put("A", "is A");
bean.put("B", "is B lah");
bean.put("C", "is C lah");
bean.put("D", "is D");
records.add(bean);
String JSONBody2 = new Gson().toJson(records);
我期望输出是[{"D":"is D","A":"is A","B":"is B lah","C":"is C lah"}]
但实际输出是[{"map":{"D":"is D","A":"is A","B":"is B lah","C":"is C lah"}}]
实际代码如下
public String Json( String json, List<T> list) {
String JSONBody = new Gson().toJson(list);
}
我需要使用gson进行序列化,这就是为什么我把T.但是我不知道为什么“地图”出现在这里。因为以前它在没有父“地图”包装的情况下工作。(相同的代码和相同的库只是新的重新创建项目,但有这个问题)
尝试
String JSONBody2 = record.toString());
会给你[{"A":"is A","B":"is B lah","C":"is C lah","D":"is D"}]
您可以从这个链接中更好地了解类型转换https://stackoverflow.com/a/27893392/4500099
虽然其他人已经回答了,但我想强调一个重要的学习。有两种方法可以将JsonObject转换为字符串。一种是new Gson(). toJson(…)
,另一种是JsonObject.toString()
。
虽然两者在许多情况下都会产生相同的结果,但如果JsonObject有一些包含有效url或base64编码值的字符串字段,第一个方法将转换
使用JSONArray
而不是List,它将为您提供所需的输出:
JSONArray records = new JSONArray();
JSONObject bean = new JSONObject();
bean.put("A", "is A");
bean.put("B", "is B lah");
bean.put("C", "is C lah");
bean.put("D", "is D");
records.put(bean);
String JSONBody2 = new Gson().toJson(records);