java - 将 hashmap 转换为 JSON 字符串

标签 java json gson double-quotes backslash

我想将 hashmap 转换为 json 字符串以通过网络发送。这是代码

public static void main(String []args) 
    throws JSONException, JsonParseException, JsonMappingException, IOException {

    Map<String,String> varMap = new MyMap<String,String>();
    varMap.put("VAR","123");
    varMap.put("OTHER_VAR","234");
    Gson gson = new GsonBuilder().create();
    String jsonString = gson.toJson(varMap);

    JSONObject json = new JSONObject();
    json.put("Variable",jsonString);
    System.out.println("JSON " + json); 
}

输出为

JSON {"Variable":"{\"VAR\":\"123\",\"OTHER_VAR\":\"234\"}"}

我认为这样做是正确的,但我发现的示例不包括 strng 中的反斜杠。我知道反斜杠转义了双引号,因此任何字符串替换方法都无法替换反斜杠。

有什么技巧可以得到以下输出吗?

JSON {"Variable":{"VAR":"123","OTHER_VAR":"234"}}

可以使用自定义序列化属性以某种方式不添加反斜杠吗?

最佳答案

这应该会给你你想要的结果。您正在对 JSON 字符串进行 JSON 编码,并添加这些反斜杠来转义这些字符。

public static void main(String []args) throws JSONException, JsonParseException, JsonMappingException, IOException{

    Map<String, Object> top = new HashMap<String, Object>();

    Map<String, Object> vars = new HashMap<String, Object>();
    vars.put("VAR","123");
    vars.put("OTHER_VAR","234");

    top.put("Variable", vars);

    Gson gson = new GsonBuilder().create();
    String jsonString = gson.toJson(top);
    System.out.println("JSON " + json);
}

关于java - 将 hashmap 转换为 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38834950/

相关文章:

java - 在 strings.xml 中找不到所有可翻译的字符串 - Android Studio

java - 如何命名线程?

javascript - 代码给出错误 "ReferenceError: CryptoJS is not defined",而我已经包含了必需的 .js 引用,原因是什么?

java - 如何将 java.util.Properties 与 JSON 文件序列化?

java - 如何使用一个 gson 反序列化器反序列化具有泛型的不同子类型

java - JBOSS类加载问题

java - Android简单的小部件

java - Android Studio - 在一个异步任务中从 2 个 url 下载 JSON 数据

json - 使用 jq 根据另一个数组中的字符串编辑 json 数组中的对象

java - 使用 Gson 在 Java 中对 HashMap<Int,Object> 进行序列化/反序列化