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