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 对象转换为平面格式,例如:
{
"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?
)
我有一个使用 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 对象转换为平面格式,例如:
{
"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?
)