我使用kotlinx.serialization
库来序列化/反序列化JSON.有一个JSON字符串:
{"id":"1"}
也可以表示为
{"uid":"1"}
并且我想用一个属性来处理这两个名称,例如:
@Serializable
data class User(val id: String)
是否可以仅使用一个data
类及其属性来解析两个JSON?
我使用kotlinx.serialization
库来序列化/反序列化JSON.有一个JSON字符串:
{"id":"1"}
也可以表示为
{"uid":"1"}
并且我想用一个属性来处理这两个名称,例如:
@Serializable
data class User(val id: String)
是否可以仅使用一个data
类及其属性来解析两个JSON?
可以,您可以使用@JsonNames
注释来提供属性名称之外的其他名称(请参见doc).您还可以在注释中定义多个附加名称.
@OptIn(ExperimentalSerializationApi::class)
@Serializable
data class User(
@JsonNames("uid")
val id: String,
)
对于serialization,将使用属性名称.对于deserialization,JSON可以包含属性名或附加名称,两者都映射到id
属性.