jackson 当所需的JsonProperty缺失或为null时失败

cetgtptt  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个类User,有两个字段:必须的id和可选的name我使用lombok和Jackson(2.12版)注解。

@SuperBuilder
@Getter
@EqualsAndHashCode
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class User {
  @JsonProperty(required = true)
  private String id;

  private String name;
}

我尝试验证一个json,并希望它失败,因为test没有所需的属性id

String test = "{\"name\":\"blablabla\"}";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(test, User.class);

我发现,如果我添加一个带有Jackson注解@JsonCreator的构造函数,它应该可以工作。
是否可以不更改User类?

wtlkbnrh

wtlkbnrh1#

决定使用@JsonCreator实现,因为没有找到答案。这就是User类现在的样子:

@SuperBuilder
@Getter
@EqualsAndHashCode
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class User {
    private String id;
    private String name;

    @JsonCreator
    public static User create(
            @JsonProperty(value = "id", required = true) String id,
            @JsonProperty("name") String name
    ) {
        return new User(id, name);
    }
}

相关问题