Fastjson: Kotlin中异常com.alibaba.fastjson.JSONException: create instance error

Created on 19 Sep 2017  ·  3Comments  ·  Source: alibaba/fastjson

数据类:
data class Person(var name: String, var age: Int, var desc: String)

JSON:
json = {"age":99,"name":"robohorse"}

测试:

@Test
fun testFastJson() {
    val person = JSON.parseObject(json, Person::class.java)
    Assert.assertEquals(99, person.age)
}

@Test
fun gson() {
    val person = Gson().fromJson(json, Person::class.java)
    Assert.assertEquals(99, person.age)
}

运行,用例testFastJson报异常:com.alibaba.fastjson.JSONException: create instance error
如果Person是Java写的,就没错

环境:
Android Studio Canary 3.0 Beta6

kotlin_version = '1.1.4-3'
"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
"org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

com.alibaba:fastjson:1.2.38 or com.alibaba:fastjson:1.1.63.android

Most helpful comment

data class Person(var name: String?, var age: Int?, var desc: String?)

加上问号就可以了

All 3 comments

这个问题是因为desc缺失导致的,如下这样,加上desc就对了

json = `{"age":99,"name":"robohorse","desc":"xxx"}`

谢谢提醒
但我的意思是,如果实体类是Java写的,就算没有desc,也会默认descnull且不会报错,那么Kotlin写的数据类也应该是这样,但事实是会报异常。
如果这不是BUG,我将关闭此issuse

data class Person(var name: String?, var age: Int?, var desc: String?)

加上问号就可以了

Was this page helpful?
0 / 5 - 0 ratings

Related issues

wongoo picture wongoo  ·  3Comments

wizardleeen picture wizardleeen  ·  4Comments

ITcathyh picture ITcathyh  ·  3Comments

yemengsky picture yemengsky  ·  5Comments

Ccixyj picture Ccixyj  ·  4Comments