[英]Setting Default value to a variable when deserializing using gson
我正在嘗試將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
}
因此,如果學校為null
,我應該將其設為默認值,例如"school":"XXX"
。 在反序列化對象時如何使用Gson配置它?
如果null
在JSON中,Gson將覆蓋您可能在POJO中設置的任何默認值。 您可能會遇到創建自定義反序列化器的麻煩,但在這種情況下可能會有點過分。
我認為最簡單的(也可以說是最好的用例)事情就相當於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;
}
注意:此解決方案的一個大問題是,要更改默認值,您必須更改代碼。 如果您希望自定義默認值,則應使用上面鏈接的自定義反序列化器。
我認為這樣做的方法是編寫你的no-args構造函數來填充默認值,或者使用自定義實例創建器。 然后,反序列化器應替換要反序列化的JSON對象中所有屬性的默認值。
您可以簡單地創建一個檢查null的通用函數
model.SchoolName= stringNullChecker(model.SchoolName);
public static String stringNullChecker(String val) {
if (null == val) val = "";
return val;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.