Browse Source

更新使用文档-自定义转换器

drake 4 years ago
parent
commit
af28fcd2b2
5 changed files with 63 additions and 1 deletions
  1. 2 0
      docs/convert-data-field.md
  2. 3 1
      docs/convert-json-array.md
  3. 6 0
      docs/converter.md
  4. 51 0
      docs/kotlin-serialization.md
  5. 1 0
      mkdocs.yml

+ 2 - 0
docs/convert-data-field.md

@@ -91,3 +91,5 @@ scopeNetLife {
 }
 ```
 
+> 但这种方式比较愚钝冗余, 推荐使用[kotlin-serialization 解析任何泛型](kotlin-serialization.md)
+

+ 3 - 1
docs/convert-json-array.md

@@ -1,3 +1,5 @@
+如果你使用[kotlin-serialization](kotlin-serialization.md)解析数据, 那就不存在以下问题(泛型擦除)可以不用继续读了
+
 首先我们知道Net可以通过泛型指定返回的数据类型
 
 ```kotlin
@@ -6,7 +8,7 @@ scopeNetLife {
 }
 ```
 
-如果是你解析的JSON对象中包含集合, 这种情况完全无需考虑. 直接解析JSON数组字段-data 才会存在以的问题
+如果是你解析的JSON对象中包含集合, 这种情况完全无需考虑. 直接解析JSON数组字段-data 才会存在以的问题
 
 ```json
 {

+ 6 - 0
docs/converter.md

@@ -10,6 +10,12 @@
 
 <br>
 
+自定义转换器Demo截图
+
+<img src="https://i.imgur.com/x4P47UI.png" width="300"/>
+
+<br>
+
 ## 创建转换器
 
 一般情况我们可以直接继承JSONConvert(因为一般接口使用的是JSON返回)

+ 51 - 0
docs/kotlin-serialization.md

@@ -0,0 +1,51 @@
+从Net3开始支持使用[kotlin-serialization](https://github.com/Kotlin/kotlinx.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](https://github.com/liangjingkanji/Net/blob/master/sample/src/main/java/com/drake/net/sample/convert/SerializationConvert.kt)作演示.
+如果你业务有特殊需要可以复制Demo中的转换器代码稍加修改
+
+=== "全局配置"
+    ```kotlin
+    initNet("http://google.com/") {
+        setConverter(SerializationConvert())
+        // ... 其他配置
+    }
+    ```
+=== "单例配置"
+    ```kotlin
+    val userList = Get<List<UserModel>>("list-data") {
+        converter = SerializationConvert() // 单例转换器, 此时会忽略全局转换器
+    }.await()
+    ```
+
+## 使用
+
+```kotlin
+scopeNetLife {
+    val userList = Get<List<UserModel>>("list-data") {
+        // 该转换器直接解析JSON中的data字段, 而非返回的整个JSON字符串
+        converter = SerializationConvert() // 单例转换器, 此时会忽略全局转换器
+    }.await()
+
+    tv_fragment.text = userList[0].name
+}
+```
+
+> 具体解析返回的JSON中的某个字段请在转换器里面自定
+
+

+ 1 - 0
mkdocs.yml

@@ -55,6 +55,7 @@ nav:
       - 自动下拉刷新: auto-refresh.md
       - 自动分页加载: auto-page.md
   - 转换数据:
+      - 任何泛型: kotlin-serialization.md
       - 转换Data字段: convert-data-field.md
       - 转换JSON数组: convert-json-array.md
   - 切换线程: switch-dispatcher.md