在 Java 中的 Jackson JSON 反序列化过程中忽略缺少的属性

2022-08-31 13:54:25

在示例中

class Person {
   String name;
   int age;
}

如果 JSON 对象缺少属性“age”,

{
    "name": "John"
}
Person person = objectMapper.readValue(jsonFileReader, Person.class);

它抛出了一个它不能反序列化的说法。是否有注释用于在反序列化期间忽略缺少的字段?JsonMappingException


答案 1

@JsonIgnoreProperties(ignoreUnknown = true)在类级别上对我有用。


答案 2

我想你想要的是

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class Person {
  ...
}

这就是杰克逊1.x的方式。我认为在2.x中有一种新的方式。类似的东西

@JsonInclude(Include.NON_NULL)
public class Person {
  ...
}

这将告诉 Jackson 仅序列化不为 null 的值,并且在反序列化缺失值时不要抱怨。我认为它只会将其设置为Java默认值。