【问题标题】:kotlinx.serialization : How to parse to different varaiable name than the exact name of JSON keykotlinx.serialization :如何解析为与 JSON 键的确切名称不同的变量名称
【发布时间】:2020-09-26 22:49:28
【问题描述】:

在 GSON 中,我们使用 @SerializedName 解析 JSON 对象,该对象与 Kotlin 中的变量名的键不同。

data class User (
    @SerializedName("id")
    long userId;
    @SerializedName("fullName")
    String name;
)

kotlinx.serialization 中,我们可以像这样序列化一个对象,但是如何在(反)序列化 期间为变量赋予不同的 JSON 键?

@Serializable
data class User (
    long userId;
    String name;
)

【问题讨论】:

    标签: android json kotlin gson kotlinx.serialization


    【解决方案1】:

    像我们在 GSON 中使用 @SerializedName 一样使用 @SerialName

    GSON

    data class User (
        @SerializedName("id")
        long userId;
        @SerializedName("fullName")
        String name;
    )
    

    kotlinx.序列化

    @Serializable
    data class User (
        @SerialName("id")
        long userId;
        @SerialName("fullName")
        String name;
    )
    

    【讨论】:

      【解决方案2】:

      根据文档:

      默认情况下,编码表示中使用的属性名称(在我们的示例中为 JSON)与它们在源代码中的名称相同。用于序列化的名称称为序列名称,可以使用@SerialName 注释进行更改。例如,我们可以在源代码中有一个带有缩写序列名称的语言属性。

      @Serializable
      class Project(val name: String, @SerialName("lang") val language: String)
      
      fun main() {
          val data = Project("kotlinx.serialization", "Kotlin")
          println(Json.encodeToString(data))
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 2021-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多