我正在尝试将
JSON转换为Java对象.当一对的某个值为空时,应该设置一些默认值.
这是我的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 }
所以如果学校是空的,我应该把它变成一个默认值,比如“学校”:“XXX”.在反序列化对象时,如何配置Gson?
解决方法
如果null在JSON中,Gson将覆盖您可能在POJO中设置的任何默认值.你可以去创造一个
custom deserializer的麻烦,但是在这种情况下可能是过度的.
我认为最简单(并且可以说是最适合你的用例)的事情是相当于Lazy Loading.例如:
private static final String DEFAULT_SCHOOL = "ABC Elementary"; public String getSchool() { if (school == null) school == DEFAULT_SCHOOL; return school; } public void setSchool(String school) { if (school == null) this.school = DEFAULT_SCHOOL; else this.school = school; }
注意:这个解决方案的大问题是为了更改默认值,您必须更改代码.如果您希望默认值可自定义,则应该使用上面链接的自定义解串器.