java - 如何在 Retrofit for Android 中处理可选的 JSON 字段?

标签 java android json gson retrofit

我正在为 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/

相关文章:

java - 为什么我需要在转换为字节之前将 Float 转换为 float ?

Java.util.Collection 重写 spliterator()

java - ORA-24816 : Expanded non LONG bind data supplied after actual LONG or LOB column

php - 将 json 传递给 php 并更新 mysql

java - 数独的逻辑求解算法(Java)

java - 不兼容的类型,发现 List<capture<?仅在 Java 8 中扩展模型>>

安卓。无法清除或替换附加功能

android - 调用 findViewById() 获取 fragment View 时出现 NullPointerException

ios - 获取 '-[__NSArrayM city]: unrecognized selector sent to instance 0x111c03460' 错误

javascript - 使用 Jquery/JS 根据日期重新排序 JSON