[alibaba/fastjson]android版本不维护了吗?

2024-09-20 363 views
2

如题,安全性问题也就算了, 就当android不需要安全性了。但kotlin这东西其实安卓用得更多,和data class的兼容性不是应该android这里更需要重视吗?

回答

0

支持的,能提具体问题么?

5

如果楼主的问题是 data class 默认值导致的无法解析,或者报错找不到构造函数,那么是无解的。 这是任意一个依赖 java 反射机制解析库共同的问题。

临时解决方案是不要使用默认参数,或者给所有字段全部加上默认参数。

或者你可以加上 kotlin-reflect 依赖。(这个玩意 2.5M Android App 慎用)

永久的解决方案是切换到 Kotlin-First 的解析库,比如 Square 的 Moshi,或者 Kotlin 官方的序列化库

3

@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的错误。

3

需要依赖kotlin-reflect

1

kotlin 字段为List<*>可空类型,当json返回null时非android版本fastjson可以正常解析,android版本会包set property error(均为最新版),可否将标准版功能迁移到android版本

3

安卓版本真鸡肋啊,更新慢,标准版可以解析的,android不行。。。

7

如果楼主的问题是 data class 默认值导致的无法解析,或者报错找不到构造函数,那么是无解的。 这是任意一个依赖 java 反射机制解析库共同的问题。

临时解决方案是不要使用默认参数,或者给所有字段全部加上默认参数。

或者你可以加上 kotlin-reflect 依赖。(这个玩意 2.5M Android App 慎用)

永久的解决方案是切换到 Kotlin-First 的解析库,比如 Square 的 Moshi,或者 Kotlin 官方的序列化库

moshi 和 kotlinx.serialization 更推荐哪个?

6

moshi 和 kotlinx.serialization 更推荐哪个?

如果可预见有跨平台需求,用 KS。

否则如果是 Android 项目建议 Moshi,因为它对 java 兼容更好。如果你不是很在意 java,KS 对编译速度影响更小一点。

@famik 我自己目前在用 moshi