Gson Json 转换添加额外的反斜杠

Posted

技术标签:

【中文标题】Gson Json 转换添加额外的反斜杠【英文标题】:Gson Json conversion adding extra back slash 【发布时间】:2022-01-10 06:19:53 【问题描述】:

我正在开发具有以下代码的服务(我可以更改此代码):

import com.google.gson.JsonObject;
import com.google.gson.Gson;

Gson gson = new Gson();
JsonObject json = new JsonObject();
json.addProperty("customer", gson.toJson(customer));
anotherServiceClient.dispatch(json.toString());

AnotherService 类代码有一个 dispatch 方法实现,它接受一个 String 对象并将其添加到一个 JSON 中,其中 party 是一个 String。我无法更改此代码。

    JsonObject json = new JsonObject();
    json.addProperty("party", inputCustomerJson);

我需要 anotherService 的输出如下:

"party": "\"customer\":\"\"id\":\"A123\""

但它是:

"party": "\"customer\":\"\\\"id\\\":\\\"A123\\\""

【问题讨论】:

【参考方案1】:

问题出在这一行:

json.addProperty("customer", gson.toJson(customer));

Gson.toJson 生成一个 JSON 字符串作为输出 ("\"id\":\"A123\""),因此当您稍后再次将此数据序列化为 JSON 时,反斜杠和双引号将被转义。

您很可能想使用Gson.toJsonTreeJsonObject.add(String, JsonElement)

json.add("customer", gson.toJsonTree(customer));

【讨论】:

以上是关于Gson Json 转换添加额外的反斜杠的主要内容,如果未能解决你的问题,请参考以下文章

Parse 的 javascript CloudCode 的 httprequest 字符串操作添加额外的反斜杠

JS去除字符串众的反斜杠

存储在本地存储中时 json 中不需要的反斜杠

返回 Json,但它包含我不想要的反斜杠“\”

为啥JSON字符串当中会出现反斜杠?

从 Laravel 中的 JSON 字符串中删除添加的反斜杠