Jackson:在反序列化期间从 json 字符串中丢失反斜杠

问题描述 投票:0回答:1

反序列化后无法保留java对象中的反斜杠

我有以下 json

{\"Num\":\"44566\677\"}

当我将其反序列化为对象时

我失去了反斜杠

预计:6787�33 实际:678732433

这是我尝试过的

String json = "{\"num\":\"6787\32432"}";


Objectmapper obj = new Objectmapper();


obj.enable(ALLOW_BACKSLASH_ESCAPING_ANY_CAHATCTER);


obj.readvalue(json, new Typereferenxe<Map<String,String>>(){}));
java jackson deserialization backslash
1个回答
0
投票

反斜杠本身应该被转义,因此尝试在 Json 中添加另一个反斜杠 - 将

{\"Num\":\"44566\677\"}
更改为
{\"Num\":\"44566\\677\"}

另外,如果您有兴趣,可以使用一个简单的

JsonUtils
类来序列化和反序列化 POJO 之间的简单 JSON。 JsonUtils 是
ObjectMapper
类的薄包装。你的代码将成为一行:

Map<String, Object> map = JsonUtils.readObjectFromJsonString(json, Map.class);`

JsonUtils
类附带由我编写和维护的开源 MjgntUtils java 库。这是JsonUtils Javadoc。您可以通过 maven 工件 或从 Github 获取该库 - 包含源代码和 Javadoc

© www.soinside.com 2019 - 2024. All rights reserved.