我正在为 Android 应用程序开发 JSON 解析器。当我调用服务器获取数据时,有一些可选字段,我如何使用 GSON 转换器在 Retrofit 中处理它?</p>
正常 react
{
"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"
}
}
备用响应,当某些字段没有任何数据时
{
"status":"SUCCESS",
"class-1":{
"class.enddate":"Jan/10/2016",
"class.startdate":"Jan/10/2015",
"class.title":"Physics 1"
}
}
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;
}
如何创建 POJO 类来处理不存在的可选字段? 目前,当字段丢失时,整个 MyClassInformation 对象变为 NULL,请帮忙。
最佳答案
我设法通过反复试验解决了这个问题,设法通过删除 @Expose 注释并更改 Gson 构造函数来使其工作......现在,如果字段丢失并且只有丢失的字段,整个对象不会被清空或排除字段显示为空。
这是我改变的, 来自
Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
到
Gson gson = new GsonBuilder().create();
希望它能帮助任何正在寻找类似答案的人。
关于java - 如何在 Retrofit for Android 中处理可选的 JSON 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33009078/