JSON 用反斜杠打印
Posted
技术标签:
【中文标题】JSON 用反斜杠打印【英文标题】:JSON is printed with backslashes 【发布时间】:2019-05-05 18:19:45 【问题描述】:"externalQueryDate":"4018-11-23"
这是我的 json 字符串,在 mysql
的列中。
我知道creditRisk.getCreditRiskDataCodeBased()
在javascript
或swagger
中,我看到的是反斜杠:
"\"externalQueryDate\":\"4018-11-23\""
我可以在前端使用JSON.parse
,但是,我想解决这个是后端。
甚至
为
StringWriter sw = new StringWriter();
objectMapper.writer().writeValue(sw, creditRisk.getCreditRiskDataTermBased());
它是这样写的:
"responseCode": "\"\\\"externalQueryDate\\\":\\\"4018-11-23\\\"\""
我试过了
objectMapper.readTree(creditRisk.getCreditRiskDataCodeBased()).toString()
和
objectMapper.writer().writeValue(sw, creditRisk.getCreditRiskDataTermBased());
和
@JsonRawValue
@JsonValue
我该如何解决这个问题?
mysql
中也没有slash
es
【问题讨论】:
【参考方案1】:如果你想用 jackson objectMapper 解析 json 字符串,你需要使用 'read' 并告诉它使用哪个类来创建解析的对象。
所以在你的情况下,你可以做类似的事情
ObjectMapper objectMapper = new ObjectMapper();
String json = "\"externalQueryDate\":\"4018-11-23\"";
Map map = objectMapper.readValue(json, Map.class);
System.out.print(map.get("externalQueryDate"));
我刚刚在这里使用了 Map,因为我不知道您要将 json 解析为哪个类。如果你有一个带有 externalQueryDate 字段的类,你可以读到它。如果要将值直接解析到 LocalDate 字段中,还可以在字段上使用 @JsonFormat 来告诉它日期格式是什么。
我建议您编写一些简单的单元测试来了解字符串中转义引号的窍门。看起来他们让你有些困惑。
【讨论】:
我不想用一个类来解析:( 那么你想把 JSON 解析成什么样的对象呢?以上是关于JSON 用反斜杠打印的主要内容,如果未能解决你的问题,请参考以下文章