【发布时间】:2019-11-01 19:57:11
【问题描述】:
我正在尝试使用 GSON 库将 JsonObject 转换为 String。但结果输出将多一层父“地图”包裹 json。请让我知道我做错了什么,为什么会出现父“地图”层?
我什至尝试使用 new Gson().toJson(bean); 来隐藏 bean;但输出结果还有一层父“地图”包裹了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 的原因。但我不知道为什么“地图”会出现在这里。和以前一样,它可以在没有父“地图”包装的情况下工作。 (相同的代码和相同的库只是新重新创建的项目,但有这个问题)
【问题讨论】:
-
使用
JSONArray而不是List<JSONObject>。 -
使用 JsonArray 代替 gson ,使用 toString() 方法转成字符串
-
@SudhirOjha 更喜欢可变对象。
-
@MuhammadAhmed 需要使用 GSON 来处理其他类型的对象