请教一下 kotlin json 序列化及配合 data class 的正确姿势

2020-08-06 16:21:15 +08:00
 yazinnnn

jackson 可以直接 decode jsonString 成 Any 需要自己强转成 jsonObject 或者 jsonArray 可以转成普通 class 实体,不能转成 data class

Fastjson 情况类似

网上搜了一下 jackson 需要引入 kotlin module 和大量注解配合才能使用 data class

请问有啥方便的轮子可以用么?

5933 次点击
所在节点    Kotlin
12 条回复
sospopo101343793
2020-08-06 16:41:53 +08:00
使用 gson,暂时没遇到啥问题
lianyue13
2020-08-06 16:48:58 +08:00
Kotlin serialization 或者 moshi
wahahaha18
2020-08-06 16:52:51 +08:00
android studio 上有一个 json to kotlin class 的插件,你可以搜一搜类似插件试一试
whyrookie
2020-08-06 16:55:41 +08:00
同一楼,用的 Gson,没啥问题
chendy
2020-08-06 18:34:59 +08:00
jackson + kotlin module 就完事了,注解都是别的故事了
ijaysdev
2020-08-06 18:42:30 +08:00
可以用 Gson 或者 Moshi,Jake Wharton 比较推荐使用 Moshi
KingOfUSA
2020-08-07 00:08:09 +08:00
compile "com.fasterxml.jackson.module:jackson-module-kotlin"
lhtdege
2020-08-07 01:17:18 +08:00
moshi +1
moshi 的实现比较优雅一些,速度比 Gson 快,底层使用的是 Okio
jeremaihloo
2020-08-07 01:43:57 +08:00
moshi 就是为 Kotlin 而生的
bluebonnet27
2020-12-24 09:24:01 +08:00
我用的 GSON,然后 data class 手打的… …
ZSpirytus
2021-11-20 18:59:34 +08:00
可以使用 Gson 。
如果担心性能问题,可以使用我写的注解处理器 :) https://github.com/zkw012300/GsonBooster
(后面会迁移到 KSP ,编译速度更快,限制更少)
ZSpirytus
2021-11-20 19:01:39 +08:00
@ZSpirytus 还有就是,gson 配合 data class 的话,需要有无参构造方法(也就是所有的 primary constructor 字段都需要有默认值),否则 gson 会使用 unsafe 来构造一个实例,会导致一些潜在的问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX