我们Android在中进行Api请求时,经常需要将Json转成本地Model,常见作法是使用gson等json解析库实现:
val model = gson.fromJson(textResponse, Model::class.java)
上面代码会通过反射创建一个Model对象,然后将json对应的字段设置到对象中,前提是保证Model的成员结构与Json一致。在Kotlin中我们可以使用data class声明Model,例如对于下面的Json:
{
"info": {
"message": "OK",
"records": 1,
"current_page": 1,
"page_size": 1000
}
}
对应的data class 定义如下:
data class Model(
val info: Info,
) {
data class Info(
val current_page: Int,
val message: String,
val page_size: Int,
val records: Int
)
}
但是当Json结构很复杂时,我们想上面这样手动定义data class将会非常费力,幸好我们有趁手的工具可以用:
JsonToKotlinClass
JsonToKotlinClass是一个Android Studio插件,如果你经常需要根据json定义data class,不妨安装这个插件,它可以将任意json字符串生成data class,也可以在IDE中选中指定文件生成
源码在github上也已经开源https://github.com/wuseal/JsonToKotlinClass
Json2Kotlin.com
如果你只是偶尔有一次需要,也可以直接使用Json2Kotlin.com,在线生成。
jsonlint.com
当Json本身有错误时,可能在生成过程中会出现错误,所以到遇到错误时,可以先检查一下Json本身的正确性,https://jsonlint.com/