joe*_*elj 8 java android json gson retrofit
我正在为Android应用程序开发JSON解析器.当我向服务器调用数据时,有一些可选字段,如何使用GSON转换器在Retrofit中处理这个?
正常的反应
{
"status":"SUCCESS",
"class-1":{
"class.enddate":"Jan/10/2016",
"class.startdate":"Jan/10/2015",
"class.title":"Physics 1",
"class.short.description":"Physics 1",
"class.description":"This is a Physics Class"
}
}
Run Code Online (Sandbox Code Playgroud)
当某些字段没有任何数据时,替代响应
{
"status":"SUCCESS",
"class-1":{
"class.enddate":"Jan/10/2016",
"class.startdate":"Jan/10/2015",
"class.title":"Physics 1"
}
}
Run Code Online (Sandbox Code Playgroud)
POJO课程
public class MyClass {
@Expose @SerializedName("status")
public String status;
@Expose @SerializedName("class-1")
public MyClassInformation myClassInformation;
}
public class MyClassInformation {
@Expose @SerializedName("class.title")
public String classTitle;
@Expose @SerializedName("class.short.description")
public String classShortDescription;
@Expose @SerializedName("class.description")
public String classDescription;
@Expose @SerializedName("class.startdate")
public String startDate;
@Expose @SerializedName("class.enddate")
public String endDate;
}
Run Code Online (Sandbox Code Playgroud)
如何以处理不存在的可选字段的方式创建POJO类?当字段丢失时,整个MyClassInformation对象变为NULL,请帮忙.
我设法通过反复试验解决了这个问题,设法通过删除 @Expose 注释并更改 Gson 构造函数来使其工作...现在,如果字段丢失并且仅显示丢失的字段,则整个对象不会被清空或排除为空。
这就是我改变的,从
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Run Code Online (Sandbox Code Playgroud)
到
Gson gson = new GsonBuilder().create();
Run Code Online (Sandbox Code Playgroud)
希望它对任何正在寻找类似答案的人有所帮助。