我使用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属性.

Json相关问答推荐

JQ如何获取特定子元素的所有父母

使用JQ在数组中 Select 第一个具有匹配项的项

规范化JSON数据

使用 Powershell,如何将 Azure AD 组成员转换为 Json 对象(文件),然后可以更新?

将boost::beast::multibuffer转换为std::istream

使用 map_values Select 包含空格的字符串未按预期工作

添加到数组时出错:找不到Add的重载和参数计数:1

如何在linux中用jq过滤json数组?

如何在 onClick 事件处理程序中识别在同一 map 上绘制的多个多边形中的哪个(使用 react-leaflet)被单击?

Powershell JSON 操作

如何使用 Swiftui 判断 JSON 是否缺少键值对

如何配置spring mvc 3在json响应中不返回null对象?

如何从 rails 中的 respond_to 方法生成 json?

如何使用 Serde 使用顶级数组反序列化 JSON?

从 Postgres 中的 json 对象中提取键、值

Android 上的 JSON - 序列化

android - 在 adb logcat 输出中格式化 json 字符串

gson:将 null 视为空字符串

如何判断 JSON 响应元素是否为数组?

从 JSON 中 Select 不同的值