繁体   English   中英

Jackson 用空字符串代替 object 反序列化 JSON 字符串

[英]Jackson deserialize JSON string with empty string instead of object

我在反序列化从外部 api 收到的响应时遇到问题。

通常 API 返回以下 JSON:

{ 
 "RootObj": {
   "InnerObj" : [
           {"Elem1": "Val1"},
       ]
    }
}

解析得很好。 然而,当 API 没有找到它时,它会返回这个 JSON:

{ 
 "RootObj": ""
}

但是有了 JSON,Jackson 就不能反序列化它了。当你使用反序列化选项 ACCEPT_EMPTY_STRING_AS_NULL_OBJECT 时也不能。

JSON 确实转换为:

{ 
 "RootObj": null
}

但是,由于 null 指针,现在 Jackson 无法实例化我的 POJO。 我希望它能够创建 rootObj class,并将 InnerObj 设置为 null..

我尝试了各种策略,比如@jsonsetter 等。但我没有运气。 有谁知道如何解决这个问题? 最好使用对象映射器设置。

将此属性添加到ObjectMapper

DeserializationFeature ACCEPT_EMPTY_STRING_AS_NULL_OBJECT

可以启用以允许 JSON 空字符串值 ("") 作为 null 绑定到 POJO 的功能。 If disabled, standard POJOs can only be bound from JSON null or JSON Object (standard meaning that no custom deserializers or constructors are defined; both of which can add support for other kinds of JSON values); 如果启用,则可以将空 JSON 字符串视为等效于 JSON null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM