You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用kotlinx.serialization实现自定义模型列表与字符串互转?

使用kotlinx.serialization实现列表与JSON字符串的互转

前置准备

  • 确保项目已添加kotlinx.serialization依赖(以Gradle为例):
    // 模块级build.gradle.kts
    plugins {
        kotlin("plugin.serialization") version "1.9.20" // 匹配你的Kotlin版本
    }
    
    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") // 适配Kotlin版本的序列化库
    }
    
  • 给自定义模型类添加@Serializable注解,这是序列化/反序列化的必要条件:
    import kotlinx.serialization.Serializable
    
    @Serializable
    data class MyModel(val id: Int, val name: String)
    

1. 模型列表转JSON字符串(对应Gson的toJson)

直接使用Json.encodeToString方法完成序列化:

import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json

fun listToJson(data: List<MyModel>): String {
    return Json.encodeToString(data)
}

如果是字符串列表(对应你Gson示例中的ArrayList<String>),代码逻辑一致:

fun stringListToJson(data: List<String>): String {
    return Json.encodeToString(data)
}

2. JSON字符串转回模型列表(对应Gson的fromJson)

使用Json.decodeFromString方法,通过泛型指定目标类型即可,无需TypeToken:

import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json

fun jsonToList(jsonString: String): List<MyModel> {
    return Json.decodeFromString(jsonString)
}

对应字符串列表的反序列化:

fun jsonToStringList(jsonString: String): List<String> {
    return Json.decodeFromString(jsonString)
}

自定义序列化配置(可选)

如果需要调整序列化规则(比如忽略未知字段、格式化输出),可以创建自定义Json实例:

val customJson = Json {
    ignoreUnknownKeys = true // 忽略JSON中未定义的字段
    prettyPrint = true // 格式化输出JSON字符串
}

// 使用自定义实例操作
customJson.encodeToString(data)
customJson.decodeFromString<List<MyModel>>(jsonString)

内容的提问来源于stack exchange,提问作者Arsham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:05:27