如题,安全性问题也就算了, 就当android不需要安全性了。但kotlin这东西其实安卓用得更多,和data class的兼容性不是应该android这里更需要重视吗?
nwwlzxa71#
支持的,能提具体问题么?
mpgws1up2#
如果楼主的问题是 data class 默认值导致的无法解析,或者报错找不到构造函数,那么是无解的。这是任意一个依赖 java 反射机制解析库共同的问题。
临时解决方案是不要使用默认参数,或者给所有字段全部加上默认参数。
或者你可以加上 kotlin-reflect 依赖。(这个玩意 2.5M Android App 慎用)
永久的解决方案是切换到 Kotlin-First 的解析库,比如 Square 的 Moshi,或者 Kotlin 官方的序列化库。
ckocjqey3#
@wenshao举个栗子
class DomainInfo { var id: Long? = null var type: String? = null var number: String? = null var name: String? = null var path: String? = null constructor() {} constructor(id: Long?, type: String?, number: String?, name: String?, path: String?) { this.id = id this.type = type this.number = number this.name = name this.path = path } }
会报can not found default constructor的错误。
a2mppw5e4#
调试了下,发现了报错原因,源码中fastjson/src/main/java/com/alibaba/fastjson/util/TypeUtils.java
Line 120 in f1e51f5
| | Class class_kotlin_kclass =Class.forName("kotlin.reflect.jvm.internal.KClassImpl"); |
"kotlin.reflect.jvm.internal.KClassImpl"已经找不到了
rfbsl7qr5#
需要依赖kotlin-reflect
ezykj2lf6#
kotlin 字段为List<*>可空类型,当json返回null时非android版本fastjson可以正常解析,android版本会包set property error(均为最新版),可否将标准版功能迁移到android版本
cedebl8k7#
安卓版本真鸡肋啊,更新慢,标准版可以解析的,android不行。。。
emeijp438#
moshi 和 kotlinx.serialization 更推荐哪个?
xienkqul9#
如果可预见有跨平台需求,用 KS。
否则如果是 Android 项目建议 Moshi,因为它对 java 兼容更好。如果你不是很在意 java,KS 对编译速度影响更小一点。
@famik 我自己目前在用 moshi
9条答案
按热度按时间nwwlzxa71#
支持的,能提具体问题么?
mpgws1up2#
如果楼主的问题是 data class 默认值导致的无法解析,或者报错找不到构造函数,那么是无解的。
这是任意一个依赖 java 反射机制解析库共同的问题。
临时解决方案是不要使用默认参数,或者给所有字段全部加上默认参数。
或者你可以加上 kotlin-reflect 依赖。(这个玩意 2.5M Android App 慎用)
永久的解决方案是切换到 Kotlin-First 的解析库,比如 Square 的 Moshi,或者 Kotlin 官方的序列化库。
ckocjqey3#
@wenshao
举个栗子
会报can not found default constructor的错误。
a2mppw5e4#
调试了下,发现了报错原因,源码中
fastjson/src/main/java/com/alibaba/fastjson/util/TypeUtils.java
Line 120 in f1e51f5
| | Class class_kotlin_kclass =Class.forName("kotlin.reflect.jvm.internal.KClassImpl"); |
"kotlin.reflect.jvm.internal.KClassImpl"已经找不到了
rfbsl7qr5#
需要依赖kotlin-reflect
ezykj2lf6#
kotlin 字段为List<*>可空类型,当json返回null时非android版本fastjson可以正常解析,android版本会包set property error(均为最新版),可否将标准版功能迁移到android版本
cedebl8k7#
安卓版本真鸡肋啊,更新慢,标准版可以解析的,android不行。。。
emeijp438#
moshi 和 kotlinx.serialization 更推荐哪个?
xienkqul9#
如果可预见有跨平台需求,用 KS。
否则如果是 Android 项目建议 Moshi,因为它对 java 兼容更好。如果你不是很在意 java,KS 对编译速度影响更小一点。
@famik 我自己目前在用 moshi