将hashmap转换为JSON字符串

时间:2016-08-08 17:10:59

标签: 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"}}

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

1 个答案:

答案 0 :(得分:0)

这应该会给你你想要的结果。你是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);
}