【问题标题】:Why I can't fetch special field from json Retrofit?为什么我无法从 json Retrofit 中获取特殊字段?
【发布时间】:2019-06-04 04:39:51
【问题描述】:

我有一个模型类,用于从 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 上显示任何数据。我认为也许问题位于与模型类不同的另一个地方并且没有设法找到它。所以,我决定评论包含新字段的行,结果我在我的房车上看到了所有信息。什么会导致这样的问题,我该如何解决?

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

【问题讨论】:

  • 您在项目中使用数据库吗?如果是这样,那可能是因为迁移。你需要增加你的数据库版本
  • @AssetBekbossynov,我的应用程序中没有使用任何数据库,我从服务器获取所有数据
  • 检查您的日志,看看是否有任何错误...如果您也可以在此处发布您的 json 响应
  • @Ogbe,我没有收到任何错误,我也看到了收入 json,但我无法从中获取任何数据

标签: android json retrofit2 android-recyclerview


【解决方案1】:

为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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多