在反序列化时,添加一个条件,仅在已传递的值不为空时反序列化该值。
示例代码:
public class Person { private String name; private String age;
// getters and setters
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
// JSON字符串 String json = "{"name":"Tom"}";
// 反序列化Person对象 ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(json, Person.class);
// 输出结果 System.out.println(person); // 输出:Person{name='Tom', age='null'} (age未传递,反序列化为默认值null)
// 改进后的解决方法
public class Person { private String name; private String age;
// getters and setters
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
// 在setter中添加条件,仅在age不为空时设置age
public void setAge(String age) {
if (age != null && !age.isEmpty()) {
this.age = age;
}
}
}
// JSON字符串 String json = "{"name":"Tom"}";
// 反序列化Person对象 ObjectMapper mapper = new ObjectMapper(); Person person = mapper.readValue(json, Person.class);
// 输出结果 System.out.println(person); // 输出:Person{name='Tom', age='null'} (age未传递,不会设置为null)