Jackson 2.5 - JsonMappingException:缺少外部类型id属性

时间:2017-08-01 09:11:06

标签: java json serialization jackson

我的这个类有一个外部属性“contentType”:

public class ContentEvent implements AbstractMessagingEvent{
    @Valid
    @JsonTypeInfo(include = JsonTypeInfo.As.EXTERNAL_PROPERTY, use = NAME, property = "contentType")
    public final ContentValue message;

    public ContentEvent(ContentValue message) {
        this.message = message;
    }

    public ContentEvent() {
        this(null);
    }

    public static ContentEvent example () {
        return new ContentEvent(HostedFile.example());
    }
}

“contentType”可以是以下之一:

@JsonSubTypes({
        @JsonSubTypes.Type(SecureFormSubmission.class),
        @JsonSubTypes.Type(SecureFormInvitation.class),
        @JsonSubTypes.Type(TextPlain.class),
        @JsonSubTypes.Type(HostedFile.class),
        @JsonSubTypes.Type(ExternalFile.class)
})
public interface ContentValue{
}

当我尝试反序列化缺少“contentType”字段的JSON时,我收到以下错误:

  

com.fasterxml.jackson.databind.JsonMappingException:缺少外部类型id属性'contentType'

我尝试添加'defaultImpl = NoClass.class'以及defaultImpl = MyOwnCustomClass'并清除错误,但结果是没有任何'contentType'的对象。

我想要的是在缺少'contentType'字段的情况下使用默认值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用@JsonIgnoreProperties(ignoreUnknown=true)注释班级。