Java Jackson with JSON:如何使它忽略其他属性,但在不完整的JSON上出错?

Java Jackson with JSON:如何使它忽略其他属性,但在不完整的JSON上出错?,java,json,jackson,Java,Json,Jackson,我知道如何让Jackson忽略Json中的任何附加字段,只需添加 @JsonIgnoreProperties(ignoreUnknown=true): 但这样做的副作用是,Jackson现在也接受不完整的JSON,并用空值填充缺少的字段。 我如何强制Jackson要求每个字段都存在于json中,而仍然忽略其中的其他字段 谢谢。为了检查所需的所有属性是否可用,您需要在属性中添加所需的注释 @JsonProperty(value = "response", required = true) publ

我知道如何让Jackson忽略Json中的任何附加字段,只需添加 @JsonIgnoreProperties(ignoreUnknown=true):

但这样做的副作用是,Jackson现在也接受不完整的JSON,并用空值填充缺少的字段。 我如何强制Jackson要求每个字段都存在于json中,而仍然忽略其中的其他字段


谢谢。

为了检查所需的所有属性是否可用,您需要在属性中添加所需的注释

@JsonProperty(value = "response", required = true)
public SomeResponse response;

Jackson不显式验证逻辑POJO内容;相反,建议您使用Bean验证(JSR-303,请参阅)API实现;例如,Hibernate项目提供的:


这是许多框架采用的方法;例如,DropWizard支持使用Jackson进行数据绑定,然后使用Bean验证进行验证(在数据绑定之后,在业务逻辑运行之前)。

不幸的是,这不会进行实际验证;它只影响JSON模式的生成,默认情况下Jackson不会进行任何验证。但您可以使用@StaxMan所描述的Bean验证,也可以创建自己的反序列化程序并在其中添加逻辑。
@JsonProperty(value = "response", required = true)
public SomeResponse response;