我正在尝试将JSON转换为Java对象。当一个对的某个值为null
时,它应该设置为某个默认值。
下面是我的POJO:
public class Student {
String rollNo;
String name;
String contact;
String school;
public String getRollNo() {
return rollNo;
}
public void setRollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}
示例JSON对象:
{
"rollNo":"123", "name":"Tony", "school":null
}
因此,如果school是null
,我应该将其设置为默认值,例如"school":"XXX"
。在反序列化对象时,如何使用Gson配置它?
4条答案
按热度按时间oewdyzsn1#
如果
null
在JSON中,Gson将覆盖您在POJO中设置的任何默认值。您可以费力地创建一个custom deserializer,但在这种情况下,这可能是多余的。我认为最简单的(并且可以说是最适合您的用例的)方法是等效于Lazy Loading。
**注意:**此解决方案的一个大问题是,要更改默认值,必须更改代码。如果希望默认值可自定义,则应使用上面链接的自定义反序列化程序。
umuewwlo2#
我认为实现这一点的方法是编写无参数构造函数来填充默认值,或者使用自定义示例创建器。然后反序列化器应该替换被反序列化的JSON对象中所有属性的默认值。
p5fdfcr13#
我也遇到了同样的问题,直到我找到this great solution。
作为参考,您可以创建一个后处理类:
注册如下:
在您的模型上实现它:
最后在转换
json
字符串时使用它:或者使用
retrofit2
:qvtsj1bj4#
您只需创建一个检查null的通用函数