JSON 用反斜杠打印

Posted

技术标签:

【中文标题】JSON 用反斜杠打印【英文标题】:JSON is printed with backslashes 【发布时间】:2019-05-05 18:19:45 【问题描述】:
"externalQueryDate":"4018-11-23"

这是我的 json 字符串,在 mysql 的列中。

我知道creditRisk.getCreditRiskDataCodeBased()

javascriptswagger 中,我看到的是反斜杠:

"\"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中也没有slashes

【问题讨论】:

【参考方案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 用反斜杠打印的主要内容,如果未能解决你的问题,请参考以下文章

为啥用反斜杠开始一个 shell 命令?

用反斜杠(\)分隔符c ++读取输入文件

VS下的C++代码引用文件时文件路径要用正斜杠“/”,而不能用反斜杠““

Python3基础 print 用反斜杠输出单引号与双引号

javascript反斜杠 “\” 的有啥特殊作用?

Masonry jquery 为啥js字符串中的斜杠被自动替换掉了