ObjectMapper反序列化必填字段

时间:2016-03-14 12:23:12

标签: java json jackson deserialization objectmapper

假设我有这样的json,我想将它反序列化为一个名为SubscriberProfile的对象。

{ "field1": "value1", "field2": "value2", "field3": "value3" }

当我使用以下代码时,它没有任何问题,

objectMapper.readValue(json,SubscriberProfile.class);

但是如果json中缺少field2(field1和field2可能会丢失),我想要objectmapper throw和exception。

所以这样的json应该抛出异常

{ "field1": "value1", "field3": "value3" }

我尝试使用@JsonProperty(required=true)注释,但仅在序列化时才有效。

你知道我怎么能解决这个问题?

提前致谢

1 个答案:

答案 0 :(得分:3)

您需要删除bean类的默认构造函数。这是杰克逊在没有你需要的领域的情况下创造一个豆子的原因。例如(从here修改):

public class NonDefaultBean {
    private final String myRequired;
    private String myNotRequired;

    @JsonCreator
    public NonDefaultBean(@JsonProperty("myRequired") String myRequired) {
        this.myRequired = myRequired;
    }

    public void setMyNotRequired(String myNotRequired) {
        this.myNotRequired = myNotRequired;
    }
}