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

时间:2019-06-04 04:39:51

标签: android json retrofit2 recycler-adapter

我有用于从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响应中再获取一个字段,称为JsonObject,"contact_data"。因此,我将此字段添加到了我的工作模型类中:

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上。 但是,现在又添加了一个字段之后,我无法在RV上显示任何数据。我以为问题可能出在与模型类不同的另一个地方,而没有找到它。因此,我决定在包含新字段的行中添加注释,结果我在RV上看到了所有信息。什么会导致这种问题,我该如何解决?

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

1 个答案:

答案 0 :(得分:2)

为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