Android Kotlin 使用 Gson,需要创建一个嵌套的 JSON 数据 class

Androidx Kotlin using Gson, needing to created a nested GSON data class

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

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

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

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)

由于您需要所有数据都在相同的数据 class 中,您需要首先使用 json-flattener 等实用程序展平 json,可在以下 link 中找到: 作者已经描述了如何使用该库。

Json-Flattener

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

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

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

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