Kotlin JSON 序列化

文章目录

    需求

    将一组 key / value 的数据,生成 json 序列化后的字符串,然后上传到服务器后台。

    参考

    kotlin 官方文档:

    https://book.kotlincn.net/text/serialization.html

    大致逻辑就是,先定义一个 data class,然后执行序列化操作。

    代码示例

    import kotlinx.serialization.Serializable
    import kotlinx.serialization.json.Json
    import kotlinx.serialization.encodeToString
    
    @Serializable
    data class Data(val age: Int, val name: String)
    
    fun main() {
       val json = Json.encodeToString(Data(18, "大象"))
    }
    

    异常

    SerializationStrategy was expected

    注意,如果不引入:

    import kotlinx.serialization.encodeToString
    

    就会报异常。

    异常2

    遇到警告信息:

    kotlinx.serialization compiler plugin is not applied to the module, so this annotation would not be processed. Make sure that you’ve setup your buildscript correctly and re-import project.

    除了依赖,还需要增加插件的依赖:

    项目级的 build.gradle

    id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.24'
    

    模块级的 build.gradle

    plugins {
        id 'org.jetbrains.kotlin.plugin.serialization'
    }
    

    但是忽略这个警告,依然可以通过编译,只是在运行时会报异常,并崩溃。。。

    kotlinx.serialization.SerializationException: Serializer for class ‘Data’ is not found. Please ensure that class is marked as ‘@Serializable’ and that the serialization compiler plugin is applied.

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式