Jackson - InvalidFormatException反序列化ENUM

时间:2017-12-11 20:37:57

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

我正在尝试使用jackson-databind Objectmapper对JSON字符串进行反序列化,该对象具有一组Enum属性。如果未在枚举中定义的未知属性出现在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);)会抛出此错误。 “Test”是要反序列化的JSON字符串中的未知属性。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

此问题最终通过编写自定义解串器来过滤枚举值并进行设置而得以解决。