【问题标题】:Jackson - InvalidFormatException deserializing ENUMJackson - InvalidFormatException 反序列化 ENUM
【发布时间】:2018-05-25 10:53:55
【问题描述】:

我正在尝试使用其中包含一组 Enum 属性的 jackson-databind Objectmapper 反序列化 JSON 字符串。当枚举中未定义的未知属性进入 JSON 时,就会发生这种情况。请在下面找到我正在使用的对象映射器配置。

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
    objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
    objectMapper.setSerializationInclusion(Include.NON_NULL);
   objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

但是,反序列化 (objectMapper.readValue(jsonText, .class);) 会引发此错误。 “测试”是 JSON 字符串中要反序列化的未知属性。

com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“Test”反序列化 com..* 类型的映射键:不是有效的表示,问题:(com.fasterxml.jackson.databind.exc.InvalidFormatException)无法从字符串“Test”反序列化 com.... 类型的映射键:不是枚举类除外的值之一:[]

有人可以帮我解决这个问题吗?

谢谢!

【问题讨论】:

  • 据我所知,您需要一个自定义反序列化程序来忽略未知的枚举值。
  • 是的..看起来像。这已报告给 jackson-databind github 问题,以便可以在即将发布的版本中添加它作为修复。
  • 这与此处发布的 jackson-databind 问题有关:github.com/FasterXML/jackson-databind/issues/1859

标签: jackson json-deserialization objectmapper fasterxml jackson-databind


【解决方案1】:

最终通过编写自定义反序列化器来过滤掉枚举值并设置它们来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2019-09-17
    • 2021-01-19
    • 1970-01-01
    相关资源
    最近更新 更多