【问题标题】:Androidx Kotlin using Gson, needing to created a nested GSON data classAndroidx Kotlin 使用 Gson,需要创建一个嵌套的 GSON 数据类
【发布时间】:2020-03-06 19:37:07
【问题描述】:

我有一个使用 kotlin 的 android 应用程序,而且我也在使用 gson 谷歌库。我要做的是创建一个嵌套数据类来匹配我要返回的 json 对象。 JSON:

{
  "results":{
    "userid": "575",
    "email" : "joe@joe"
   },
   "errors": {"errormessage":"no errors found"}
}

我正在使用 GSON 创建一个 kotlin 数据类,但我不确定如何处理嵌套部分,以便 GSON 对象与上面的 json 匹配 以下是我认为可行的方法。

【问题讨论】:

  • @MartinZeitler 仅解析为 Java 对象
  • 将java对象粘贴到你的代码中,然后右键convert to kotlin
  • 如果它有效@LenaBru 我会的,但它给了我一个没有错误的空白屏幕。

标签: android json kotlin gson


【解决方案1】:
data class Response( @SerializedName("results") val results: Results? = null, @SerializedName("errors") val errors: Errors? = null)

data class Results(@SerializedName("userid") val userId: String, @SerializedName("email") val email:String)

data class Errors(@SerializedName("errormessage") val errorMessage:String)

【讨论】:

  • 因为要求我需要它们都在同一个数据类中
【解决方案2】:

由于您需要将所有数据放在同一个数据类中,因此您首先需要使用json-flattener 等实用程序将 json 展平,该实用程序可在以下链接中找到: 作者已经描述了如何使用该库。

Json-Flattener

此实用程序会将您的分层 json 对象转换为平面格式,例如:

{
    "results.userid": "575",
    "results.email": "joe@joe",
    "errors.errormessage": "no errors found"
}

然后您可以将其反序列化为数据类模型,例如:

data class Response(
    @SerializedName("results.userid") val userId: String?,
    @SerializedName("results.email") val email: String?,
    @SerializedName("errors.errormessage") val errorMessage: String?
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 2019-04-29
    • 2020-02-24
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多