带有String的GSON问题

时间:2013-05-15 06:59:07

标签: java gson linkedhashmap

    String s = "m\\"+"/m\\/m/m/m/m/m";

    LinkedHashMap<String, String> hm = new LinkedHashMap<>();

    hm.put("test", s);

    System.out.println(hm+"  Hash map = "+hm.toString());

精细输出为{test=m\/m\/m/m/m/m/m} Hash map = {test=m\/m\/m/m/m/m/m}

    String s2 = new Gson().toJson(hm.toString());

    System.out.println("Json result is "+s2);

不正确输出为Json result is "{test\u003dm\\/m\\/m/m/m/m/m}"

GSON 发疯了还是我做错了? 反斜杠会发生什么,以及此u003d出现在哪里?我知道很久以前就存在这种性质的错误,但它已经解决了。 我该如何解决这个问题? 提前谢谢。

2 个答案:

答案 0 :(得分:74)

=符号已编码为\u003d.因此您需要使用disableHtmlEscaping()

您可以使用

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());

对于\/转为\\/问题,解决方案是

s2.replace("\\\\", "\\");

答案 1 :(得分:1)

由于有些人喜欢挑剔,我会添加问题的答案(尽管已经回答并选择了正确的答案)......

我同意这个问题的选择答案,请使用以下代码:

Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String s2 = gson.toJson(hm.toString());
s2.replace("\\\\", "\\");
@Bajrang Hudda已经问过\ n ...我最近遇到了这个问题......我能够用以下方法解决它:

Gson gson = new Gson();
String json = (gson.toJson(data)).replaceAll("\\\\n", "\\n");