kotlin-serialization.md 1.8 KB

从Net3开始支持使用kotlin-serialization(简称KS). 可以指定任何类泛型解析成任何数据结构返回, 比如直接返回List/Map/Pair...

Net是目前唯一支持kotlin-serialization转换器的网络请求库

kotlin-serialization 特点

  1. kotlin官方出品, 推荐使用
  2. kotlinx.serialization 是Kotlin上是最完美的序列化工具
  3. 相对其他解析库他解决泛型擦除机制, 支持任何泛型, 可直接返回Map/List/Pair...
  4. 多配置选项
  5. 支持动态解析
  6. 支持ProtoBuf/CBOR/JSON等数据序列化

配置转换器

这里使用Demo中的SerializationConvert作演示. 如果你业务有特殊需要可以复制Demo中的转换器代码稍加修改

=== "全局配置"

```kotlin
initNet("http://google.com/") {
    setConverter(SerializationConvert())
    // ... 其他配置
}
```

=== "单例配置"

```kotlin
val userList = Get<List<UserModel>>("list-data") {
    converter = SerializationConvert() // 单例转换器, 此时会忽略全局转换器
}.await()
```

使用

scopeNetLife {
    val userList = Get<List<UserModel>>("list-data") {
        // 该转换器直接解析JSON中的data字段, 而非返回的整个JSON字符串
        converter = SerializationConvert() // 单例转换器, 此时会忽略全局转换器
    }.await()

    tv_fragment.text = userList[0].name
}

注意被KS转换器解析的数据模型都要求使用注解@Serializable

@Serializable
data class UserModel(var name: String, var age: Int, var height: Int)

具体解析返回的JSON中的某个字段请在转换器里面自定