gson kotlinx.序列化:如何解析为与JSON关键字的确切名称不同的变量名

qnzebej0  于 2022-11-06  发布在  Kotlin
关注(0)|答案(2)|浏览(203)

对于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;
)
gdx19jrr

gdx19jrr1#

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

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;
)
xurqigkl

xurqigkl2#

根据文件:
在编码表示中使用的属性的名称,在我们的例子中是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))
}

相关问题