@JsonIgnoreProperties(ignoreUnknown = true)的对面,如果我有必填字段?

时间:2016-06-13 15:26:24

标签: java json jackson

我有5个字段,我的用户可以在以后填写(姓名,昵称,电子邮件,生日,教育),我希望这个名称,电子邮件和生日是强制性的,所以必须写一些东西,我和#39;我找到了通过@JsonIgnoreProperties注释

忽略某些字段的另一种方法

2 个答案:

答案 0 :(得分:3)

除了使用早期答案中提到的优秀Bean Validation API之外,Jackson 2.7还增加了对确保所需属性的有限支持,只要它们使用@JsonCreator带注释的构造函数传递:

public class POJO {
  @JsonCreator
  public POJO(@JsonProperty(value="name", required=true) String name,
       @JsonProperty(value="age", required=true) int age) {
    ...
  }

在这种情况下,nameage的缺失值都会触发JsonMappingException

将来可能会为所有类型的属性添加类似的验证,但就目前而言(直到并包括Jackson 2.8),只有这样才能验证基于创建者的属性。

答案 1 :(得分:2)

我假设您使用的是杰克逊,因为您使用的是@JsonIgnoreProperties

杰克逊旨在将验证与反序列化JSON分开。因此,您需要使用Bean Validation来执行验证特定字段是否为空。

您需要使用@NotNull注释,特别是您要强制使用的字段。