将HashMap解析为Json

3

以下是我正在尝试解析的 HashMap:

HashMap map = new HashMap();  
map.put("bowser", "b=mozilla");  
map.put("car", "car=Ford");
map.put("model","model=Mustang");
map.put("Year", 2014);
map.put("dealer", "Dealer=AKHI");

我先尝试了Gson,然后又用Jackson,但它们都有一个共同的问题。它们将“=”解析为“\u003d”。

ObjectMapper mapper = new ObjectMapper();

try {
    String json = mapper.writeValueAsString(map);
    System.out.println("---------------------Parsed HashMap---------------------------:"+json); 
}
catch (JsonGenerationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} 
catch (JsonMappingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

我得到的输出是:

---------------------解析HashMap---------------------------: {"dealer":"Dealer\u003dAKHI","car":"car\u003dFord","Year":2014,"model":"model\u003dMustang","bowser":"b\u003dmozilla"}

我看了几篇其他博客,发现API中存在故障,但我们是否可以通过其他方法在此处修复它。


你使用的是哪个库的版本?我正在使用 Jackson 2.2.2 并且它序列化得很好:{"dealer":"Dealer=AKHI","car":"car=Ford","Year":2014,"model":"model=Mustang","bowser":"b=mozilla"} - Michał Ziober
在这里我使用了Gson,但我也使用了jackson,但是我遇到了类似的问题。 - RIP SunMicrosystem
快速评论术语:不,你不是“解析”:那意味着读取JSON内容,生成其他内容。你正在尝试创建JSON:从Maps生成或写入JSON。除此之外,你为什么在意呢?JSON生成器可以按照他们想要的任何方式使用转义,而你得到的输出是输入的合法和准确表示,即使在GSON的情况下,使用该转义并不严格必要。 - StaxMan
1个回答

6

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

您可以使用

 Gson gson = new GsonBuilder().disableHtmlEscaping().create();

纯粹出于兴趣,将“=”字符转义为“=”是否可行? - Gorbles
@Gorb 无法理解你的意思? - Kick
转义值,例如使用反斜杠(在Java中是转义字符),是否也可以修复这种行为? - Gorbles
Gson gson = new GsonBuilder().disableHtmlEscaping().create();这对我很有效,我能够解析等号符号。谢谢Niks。 - RIP SunMicrosystem
如果解决方案有效,请选择为正确答案:wlc @Akhilendra。 - Kick
@NiksTyagi:我刚刚做了,我是Stackoverflow的新手。只是在逐渐适应中... :) - RIP SunMicrosystem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接