android - 为什么我不能从 json Retrofit 中获取特殊字段?

标签 android json retrofit2 android-recyclerview

我有一个模型类,用于从 api 获取作业列表,其中包含带有对象的 arrayList 作为描述作业模型的另一个类模型:

class JobModel(@field:SerializedName("company_name")
               @field:Expose
               val company_name: String, @field:SerializedName("lastdate")
               @field:Expose
               val lastdate: String, @field:SerializedName("id")
               @field:Expose
               var id: Int, @field:SerializedName("position")
               @field:Expose
               var position: String?, @field:SerializedName("location")
               @field:Expose
               val location: String, @field:SerializedName("job_link")
               @field:Expose
               val job_link: String, @field:SerializedName("seen")
               @field:Expose
               val isSeen: Boolean, @field:SerializedName("in_notepad")
               @field:Expose
               val in_notepad: Boolean, @field:SerializedName("original_url")
               @field:Expose
               val original_url: String)

然后,我必须从 json 响应中获取一个名为 "contact_data" 的字段作为 JsonObject。所以,我将这个字段添加到我的工作模型类中:

class JobModel(@field:SerializedName("company_name")
               @field:Expose
               val company_name: String, @field:SerializedName("lastdate")
               @field:Expose
               val lastdate: String, @field:SerializedName("id")
               @field:Expose
               var id: Int, @field:SerializedName("position")
               @field:Expose
               var position: String?, @field:SerializedName("location")
               @field:Expose
               val location: String, @field:SerializedName("job_link")
               @field:Expose
               val job_link: String, @field:SerializedName("seen")
               @field:Expose
               val isSeen: Boolean, @field:SerializedName("in_notepad")
               @field:Expose
               val in_notepad: Boolean, @field:SerializedName("original_url")
               @field:Expose
               val original_url: String, @field:SerializedName("contact_data")
               @field:Expose
               val contact_data: JsonObject)

可以使用适配器在 RV 上显示作业列表。我可以从 json 中获取所有数据并将其显示在我的房车上。 但是 现在,在添加一个字段后,我无法在 RV 上显示任何数据。我想也许问题出在不同于模型类的另一个地方,但没能找到它。因此,我决定对包含新字段的行进行注释,结果我在房车上看到了所有信息。什么会导致这样的问题,我该如何解决?

附言如果您需要,我会添加一些更有用的信息,但请告诉我您需要什么。

最佳答案

为 contact_data 对象中的键创建另一个类

class contactData(@field:SerializedName("conact_name")
           val contact_name: String,
 @field:SerializedName("contact_number")
               val contact_number: String)

然后使用 contact_data 序列化键而不是 JsonObject 引用此类名称。

 @field:SerializedName("contact_data")
               @field:Expose
               val contact_data: contactData

关于android - 为什么我不能从 json Retrofit 中获取特殊字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56437442/

相关文章:

android - 带有附加信息的 MediaType

android - 为什么我的 jQuery Mobile 应用程序无法在 Android 4.0.3 浏览器中正确显示?

javascript - 如何显示 JSON 数据中的图像 URL?

xml - 使用 XML 模式将 XML 转换为 JSON

android - 是否可以在 Android Profiler 中检查网络请求的发布参数

java - Android 对 Web API 的多部分请求未获取与请求关联的文本

json - 检查 json 数组中是否存在值

java - 在微调器中选择项目后如何获取微调器值

android - 改造中的 Call<> 是什么?

java - 如何将Jsonelement解析为Array?