如何使用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
相关产品推荐
相关产品推荐

