ObjectMapper无法正确处理双引号

时间:2019-06-17 07:29:18

标签: java json jackson

我正在尝试向Postgres JSONB中实现HTTP补丁请求。请求的输入是json中的补丁请求,我使用swagger代码生成器基于开放的API规范将此对象映射到自动生成的POJO。

一切正常,但问题是将值解析回去。

该数据库是一个json对象,如果我们进行补丁,我们将对json值进行更新,因此必须将补丁请求的值转换回json。

现在我不知道值是什么,可能是日期,可能是字符串,可能是整个对象。

当我将整个对象映射到json时,它可以正常工作,但是如果该值恰好是1值(在我的情况下是一个包​​含日期字段的字符串),则会添加双双引号(“” dateString“”)。我无法做到这一点,如果将其插入到postgres的jsonb对象中,则会创建无效的json。

我已经尝试将映射器配置为跳过引号并允许使用未引号的字段,如How to let jackson generate json string using single quote or no quotes?

中所述

这什么也没做。

我还尝试使用一个专门用于jsonB解析的库,但这确实是一样的事情。

[{
    "op": "replace",
    "path": "/dueDate",
    "value": "2019-06-14T12:02Z"
}, {
    "op": "replace",
    "path": "/state",
    "value": {
        "state_initiator": "string",
        "status": "PROCESSING"
    }
}]

在下面的代码中,“文档”包含上述补丁中的1个补丁

ObjectMapper mapper = new ObjectMapper();
String valueAsJson = mapper.writeValueAsString(document.getValue());

/ state修补程序工作正常并且可以正确解析,/ dueDate不能正常运行,最终以“” 2019-06-14T12:02Z“” <-双引号

不确定为什么它已经是字符串值时为什么会添加双引号,从而导致不正确的json。

我希望对象保持原样,但如果它是单个字符串值,则对象周围会带有单双引号->“ 2019-06-14T12:02Z”

我可能在这里错过了一些非常基本的东西,但是我一直在努力,但没有取得任何进展。

0 个答案:

没有答案