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

swvgeqrz  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(192)

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

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());

另一个服务类代码有一个调度方法实现,它接受一个String对象,并将其添加到一个json中,其中party是一个String。我不能更改此代码。

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

我需要anotherService具有如下输出:

"party": "{\"customer\":\"{\"id\":\"A123\"}"}

而是:

"party": "{\"customer\":\"{\\\"id\\\":\\\"A123\\\"}"}
fumotvh3

fumotvh31#

问题是这一行:

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

Gson.toJson生成一个JSON字符串作为输出("{\"id\":\"A123\"}"),因此当您稍后再次将此数据序列化为JSON时,反斜杠和双引号将被转义。
最有可能的情况是使用Gson.toJsonTreeJsonObject.add(String, JsonElement)

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

相关问题