如何解决使用 Gson 转义双引号将 Map 转换为 String
我有以下Map
:
import java.util.Map;
Map<String,Object> myMap = Map.of(
"key1","value1","key2",Map.of(
"key2-1","value2-1","key2-2",22
)
));
我正在尝试使用 Gson
将其转换为以下 String
:
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
来实现我想要的转义?
任何想法将不胜感激!
解决方法
(感谢@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}}"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。