我有一个 Java POJO
public class TagBean {
private String type;
private String id;
public TagBean(String type, String id) {
this.type = type;
this.id = id;
}
// getters
// setters
}
我正在构建 pojo 并将它们添加到列表中,如下所示
....
List<TagBean> channelsList = new ArrayList<>();
List<TagBean> showsList = new ArrayList<>();
for each <business logic> {
if value=channels {
channelsList.add(new TagBean(...));
}
if value=shows {
showsList.add(new TagBean(...));
}
}
Gson gson = new GsonBuilder().create();
JsonObject tjsonObject = new JsonObject();
tjsonObject.addProperty("channels", gson.toJson(channelsList));
tjsonObject.addProperty("shows", gson.toJson(showsList));
JsonObject mainjsonObject = mainjsonObject.add("tags", tjsonObject);
return mainjsonObject;
我的输出是:
{
"tags": {
"channels": "[{\"type\":\"channel\",\"id\":\"channel\",\"name\":\"Channel\",\"parent\":\"SXM\"}]",
"shows": "[{\"type\":\"shows\",\"id\":\"shows\",\"name\":\"Shows\",\"parent\":\"SXM\"},{\"type\":\"shows\",\"id\":\"howard\",\"name\":\"Howard Stern\",\"parent\":\"shows\"},{\"type\":\"shows\",\"id\":\"howardstern\",\"name\":\"Howard Stern\",\"parent\":\"howard\"}]",
"sports": "[]"
}
}
如何删除反斜杠?所以输出是这样的:
{
"tags": {
"channels": " [{"type":"channel","id":"channel","name":"Channel","parent":"SXM"}]",
"shows": "[{"type":"shows","id":"shows","name":"Shows","parent":"SXM"},{"type":"shows","id":"howard","name":"Howard Stern","parent":"shows"}....
其他帖子很少,但没有一个解释这一点。
最佳答案
问题是这样造成的:
tjsonObject.addProperty("channels", gson.toJson(channelsList));
它所做的是将 channelsList
转换为包含 JSON 列表表示形式的字符串,然后将属性设置为该字符串。由于字符串包含 JSON 元字符,因此当字符串第二次序列化时,它们必须被转义。
我认为你需要这样做:
tjsonObject.add("channels", gson.toJsonTree(channelsList));
这应该产生这样的结果:
{
"tags": {
"channels":
[{"type":"channel","id":"channel","name":"Channel","parent":"SXM"}],
"shows":
[{"type":"shows","id":"shows","name":"Shows","parent":"SXM"},
{"type":"shows","id":"howard","name":"Howard Stern","parent":"shows"}
....
这与您的问题要求的略有不同,但它的优点是语法上有效的 JSON!
关于java - 如何避免 GSON JsonObject 中的反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51510733/