2

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

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

当我使用以下代码时,它可以正常工作,

objectMapper.readValue(json,SubscriberProfile.class);

但如果 json 中缺少 field2(可能缺少 field1 和 field2),我想要 objectmapper 抛出和异常。

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

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

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

你知道我该如何解决这个问题吗?

提前致谢

4

1 回答 1

4

您需要删除 bean 类的默认构造函数。这就是让杰克逊在没有您必填字段的情况下创建 bean 的原因。例如(从这里修改):

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;
    }
}
于 2016-03-14T12:51:38.107 回答