【问题标题】:JSON is printed with backslashesJSON 用反斜杠打印
【发布时间】: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

【问题讨论】:

    标签: mysql json hibernate spring-boot jackson


    【解决方案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 解析成什么样的对象呢?
    猜你喜欢
    • 1970-01-01
    • 2019-01-13
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多