我在JSON反序列化和将其Map到枚举时遇到了问题。我从外部API获取JSON,类似于下面两个示例:
第一个
我想将空值Map到某个默认枚举值。
模型对象
SomeEnum someValue;
和枚举类
public enum SomeEnum {
@JsonProperty("exists") EXISTS,
NONE;
}
对于exists,价值模型类包含正确的枚举,但是如果我从API得到null
,它在模型中仍然是null
。
我试着用@JsonEnumDefaultValue
创建一些用@JsonCreator
注解的方法,创建自己的枚举反序列化器,但是这些解决方案都不适合我。有人知道吗,我怎么才能把空值反序列化为一些默认的枚举?
3条答案
按热度按时间edqdpe6u1#
(老实说,我在这里写了这个代码没有测试它,也许你需要修改它一点)
您可以尝试执行如下操作(带构造函数的
Enum
和使用@JsonCreator
):如果不起作用,请保留上面的枚举,并尝试创建一个自定义转换器(没有Jackson),如下所示
如果使用 Spring Boot 您应该将此活页夹放入控制器中
下面是自定义转换器,用于指定如何将输入值转换为枚举值。
ncecgwcz2#
好了,现在我通过创建自定义枚举反序列化器解决了这个问题。
并使用@JsonDeserialize注册它:
但我还是更喜欢使用@JsonProperty之类的东西,但要为null,比如@JsonNullProperty或类似的东西。
ilmyapht3#
将字段的起始值设置为枚举的值。
但是,这意味着如果该值不存在,它也将与指定了
null
时的值相同。第一个
不确定这种行为是否是你想要的。