加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 杰克逊无法将空字符串值转换为枚举

发布时间:2020-12-15 04:49:57 所属栏目:Java 来源:网络整理
导读:我正在寻找一个方便的解决方案与Jackson(2.8)在反序列化之前/期间筛选出指向空字符串值的字段: @JsonInclude(JsonInclude.Include.NON_EMPTY)public class Guis {public enum Context { SDS,NAVIGATION}public enum Layer { Library,Status,Drivingdata}//
我正在寻找一个方便的解决方案与Jackson(2.8)在反序列化之前/期间筛选出指向空字符串值的字段:

@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Guis {

public enum Context {
    SDS,NAVIGATION
}

public enum Layer {
    Library,Status,Drivingdata
}

// client code

 String s = "{"context":"","layer":"Drivingdata"}";
 ObjectMapper mapper = new ObjectMapper();
 Guis o = mapper.readValue(s,Guis.class);

错误

Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type cq.speech.rsi.api.Guis$Context from String "": value not one of declared Enum instance names: [SDS NAVIGATION] at [Source: {"context":"","layer":"Drivingdata"}; line: 1,column: 12] (through reference chain: cq.speech.rsi.api.Guis["context"])

还有什么我试过的……
啊这一个

mapper.getDeserializationConfig().with(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);

错误仍然存??在,显然甚至谷歌搜索都没有多大帮助……

编辑

set DeserializationFeature不能像上面举例说明的那样工作.对我来说,解决方案最终是添加这个片段:

mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL,true)

解决方法

您可以为映射器启用DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL,默认情况下禁用它.只是告诫使用它,它会将所有未知的包括空字符串视为null为枚举.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读