【发布时间】:2021-01-18 13:45:37
【问题描述】:
我正在尝试使用com.squareup.moshi (v1.10.0) 在我用 Kotlin 编写的 Android 应用程序中实现 JSON 解析。
在 JSON 文件中,有一些属性对我来说并不有趣。比方说,我只需要能够在地图上标记地点的位置,JSON 看起来像这样:
"location":{
"address":{
"country":"..."
},
"position":{
"lat":47.469866,
"lon":19.062435
}
}
如果我是对的,如果我想解析 JSON,Kotlin 中的数据类应该是这样的:
@Parcelize
data class Location(
val address: Address,
val position: Position
): Parcelable
@Parcelize
data class Address(
val country: String
): Parcelable
@Parcelize
data class Position(
val lat: Double,
val lon: Double
): Parcelable
在Moshi's documentation 中,我可以找到transient 关键字来跳过在Kotlin 中用作注释的值(@Transient)。正如文档所说:
在编写 JSON 时会省略瞬态字段。读取 JSON 时,即使 JSON 包含该字段的值,也会跳过该字段。相反,它将获得一个默认值。
是不是说如果我不想拥有地址对象,就应该使用下面的代码?
@Parcelize
data class Location(
@Transient val address: Address? = null,
val position: Position
): Parcelable
另外,一般来说呢?如果我在 JSON 对象中有大量属性但我知道我只需要 'position' 对象怎么办?我是否仍需要创建 null 值来逐字段解析 JSON 文件?
【问题讨论】:
标签: android json parsing kotlin moshi