我正在尝试转换 JSON到 Java 对象。当pair的某个值为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
}
所以如果学校是null
,我应该把它变成一个默认值,比如"school":"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;
}
注意:此解决方案的最大问题是,为了更改默认值,您必须更改代码。如果您希望自定义默认值,则应使用上面链接的自定义反序列化器。
https://stackoverflow.com/questions/30216317/
相关文章:
java - Spring 3.0 使用 jackson 消息转换器做出 JSON 响应
.net - 为什么 ServiceStack.Text 不默认日期为 iso8601?
android - 如何从 JSONObject 中删除 nameValuePairs 键?
json - 如何在 Play Framework 2.x 中实现嵌入式对象的隐式 Json 写入
json - 在 oracle 12c 中以 JSON 形式返回 sql 查询的结果
json - 如何在 spark sql 中解析嵌套的 JSON 对象?