[alibaba/fastjson]Android Kotlin下使用仍有问题JSONException: length=1; index=1

2025-10-28 192 views
6

安卓平台,开发使用kotlin, 操作json使用fastjson,使用过程中问题不断(或者说不如意,也许没get到...)。

以下方JSON结构为例

{
    "key":...,
    ...
    "list":[
        {...},
        {...},
        ...
        {...}
    ]
}

list对应的数据类Test

data class Test(var id: Int?) : Serializable {

    var name: String? = null
    ...
    var createTime: Date? = null
}

一开始引用的是常规分支的1.2.58,在将data这个JSONArray反序列化成List列表

...
json.getJSONArray("list").toJavaList(Test::class.java)

运行失败

com.alibaba.fastjson.JSONException: default constructor not found.

后来加了 kotlin-reflect后,

com.alibaba.fastjson.JSONException: create instance error, public com.xxx.entity.Test(java.lang.Integer)

也尝试过添加默认构造方法,也不行。

后面看到有专门针对 android平台的分支,于是调整依赖为了1.1.71.android 还是运行失败

com.alibaba.fastjson.JSONException: length=1; index=1

希望能提供一份kotlin的集成使用介绍或者使用没有问题的指导一下,不用很详细。谢谢。

回答

2

有没有谁Kotlin android 使用没毛病的,介绍一下呗

2

fastjson库依赖 1.1.71.android kotlin-reflect也需要

类声明应该这样

data class Test(
    var id: Int?,
    var name: String? = null,
    var createTime: Date? = null
) : Serializable

com.alibaba.fastjson.JSONException: length=1; index=1我也有遇到这个问题,打断点看到和Instant Run有关,关闭之后使用ok。Instant Run在Preferences->Build->Instant Run里面关闭

5

fastjson库依赖 1.1.71.android kotlin-reflect也需要

类声明应该这样

data class Test(
    var id: Int?,
    var name: String? = null,
    var createTime: Date? = null
) : Serializable

com.alibaba.fastjson.JSONException: length=1; index=1我也有遇到这个问题,打断点看到和Instant Run有关,关闭之后使用ok。Instant Run在Preferences->Build->Instant Run里面关闭

谢谢,通过你说的方法,已经基本上可以了。不过遇到一个应该是bug,Json里的字符串日期,无法转换成Date类型。你有遇到过吗

7

fastjson库依赖 1.1.71.android kotlin-reflect也需要

类声明应该这样

data class Test(
    var id: Int?,
    var name: String? = null,
    var createTime: Date? = null
) : Serializable

com.alibaba.fastjson.JSONException: length=1; index=1我也有遇到这个问题,打断点看到和Instant Run有关,关闭之后使用ok。Instant Run在Preferences->Build->Instant Run里面关闭

我按你说的用法,遇到了另一个问题,就是我json里有一个字符串的日期字段,反序列化时,这个json里的字符日期没有转换成dto里的Date类型,抛异常了,具体情况在这 #2479