有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将映射转换为使用Gson转义的双引号字符串

我有以下几点Map

import java.util.Map;

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

我试图使用^{}将其转换为以下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来实现我想要的转义

任何想法都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    (感谢@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}}"