用于 Kotlin JSON 处理的 kotlinx.serialization 库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 kotlinx.serialization?

Kotlinx.serialization 是 Kotlin 官方提供的数据序列化和反序列化库,支持 JSON 格式。它提供了一种强大且类型安全的方式,将 Kotlin 对象转换为 JSON 以及反向转换,无需使用反射,并支持多平台(JVM、JS、Native)。

为什么 Kotlin 需要 JSON 处理?

在现代 Kotlin 开发中(Android、基于 Ktor 的服务器应用、多平台项目),处理 JSON 是一项必不可少的任务:与 REST API 交换数据、配置文件、数据存储。Kotlinx.serialization 高效、安全地解决了这一问题,并且样板代码最少。

安装

要使用该库,请在 build.gradle.kts 中添加插件:

plugins {    kotlin("plugin.serialization") version "1.9.22"}

dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")}

对于 Maven,请添加依赖项和带有 serialization 配置的 kotlin-maven-plugin 插件。

主要功能

  • @Serializable — 用于需要序列化的类的注解。
  • Json.encodeToString() — 将对象转换为 JSON 字符串。
  • Json.decodeFromString() — 将 JSON 字符串解析为对象。
  • JsonObject / JsonElement — 无需创建 DTO 即可动态处理 JSON。
  • @Transient, @Required, @SerialName — 对字段进行精细配置。
  • JsonConfiguration — 格式化设置(prettyPrint, ignoreUnknownKeys)。

Kotlin 代码示例

import kotlinx.serialization.*import kotlinx.serialization.json.*

@Serializabledata class User(val name: String, val age: Int)

fun main() { val user = User("Алиса", 30) // 序列化 val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Алиса","age":30} // 反序列化 val decodedUser = Json.decodeFromString<User>(jsonString) println(decodedUser) // User(name=Алиса, age=30) // 处理动态 JSON val jsonObject = Json.parseToJsonElement("""{"city":"Москва","zip":101000}""").jsonObject println(jsonObject["city"]) // "Москва"}

何时使用

该库非常适合以下场景:

  • Android 应用(Retrofit + kotlinx.serialization)。
  • 基于 Ktor 的服务器项目。
  • 多平台应用(KMP)。
  • 任何需要快速、安全且无需反射地处理 JSON 的项目。

在 Kotlin 项目中,它在性能和类型安全性方面优于 Gson 和 Jackson。

推荐