我正在尝试向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”
我可能在这里错过了一些非常基本的东西,但是我一直在努力,但没有取得任何进展。