使用gson将map转换为双引号转义的字符串

i2byvkas  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(1164)

我有以下几点 Map :

import java.util.Map;

Map<String, Object> myMap = Map.of(
    "key1", "value1",
    "key2", Map.of(
        "key2-1", "value2-1",
        "key2-2", 22
    )
));

我试着把这个转换成下面的 String 使用 Gson :

String expected = // ???
System.out.println(expected);
{\"key1\":\"value1\",\"key2\":{\"key2-1\":\"value2-1\",\"key2-2\":22}}

(请注意,打印时双引号是转义的)。
到目前为止,为了实现这一点,我正在做:

import com.google.gson.Gson;

String myMapAsJsonString = new Gson().toJson(myMap);
String myMapAsJsonStringWithDoubleQuotesEscaped = myMapAsJsonString.replace("\"", "\\\"");

但我很肯定第二行可以被其他东西取代,我只能用它 Gson 为了实现我想要的逃跑?
任何想法都将不胜感激!

tmb3ates

tmb3ates1#

(感谢@fluffy)
而不是:

String myMapAsJsonStringWithDoubleQuotesEscaped = myMapAsJsonString.replace("\"", "\\\"");

我刚刚再次重新序列化了json字符串:

import com.google.gson.Gson;

String myMapAsJsonString = new Gson().toJson(myMap);
// reserialize once again with toJson method
String myMapAsJsonStringWithDoubleQuotesEscaped = new Gson().toJson(myMapAsJsonString);

得到了我期望的正确结果:

System.out.println(myMapAsJsonStringWithDoubleQuotesEscaped);

印刷品:

"{\"key1\":\"value1\",\"key2\":{\"key2-1\":\"value2-1\",\"key2-2\":22}}"

相关问题