Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
qiushui95 opened this issue Sep 2, 2017 · 13 comments
Closed

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

qiushui95 opened this issue Sep 2, 2017 · 13 comments

Comments

@qiushui95
Copy link

亲测:版本1.2.38

data class User(val name: String, val age: Int)
//data class User(@JSONField(name="name")val name: String,@JSONField(name="age") val age: Int)

val list = mutableListOf()
for (i in 1..10) {
list.add(User("ycx$i", i * 10))
}
val json = JSON.toJSONString(list)
Log.e("==========json======", json)
val pList: MutableList?
try {
pList = JSON.parseArray(json, User::class.javaObjectType)
Log.e("==========", pList.toString())
} catch (e: Exception) {
e.printStackTrace()
}

data class 用第一行那样写会报如题的错误
第二种写法不会报错
亲测Android studio 2.3.3 ext.kotlin_version = '1.1.4-3'
亲测Android studio 3.0 beta4 ext.kotlin_version = '1.1.4-3'

@kimmking
Copy link
Contributor

kimmking commented Sep 2, 2017

import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.annotation.JSONField
import kotlin.collections.*



fun main(args: Array<String>) {

    val dt = DataClass(1,2)
    val json = JSON.toJSONString(dt)
    println(json)
    val clz = DataClass::class
    println(clz.javaObjectType)
    val dt1 = JSON.parseObject(json,clz.javaObjectType)
    println(dt1)

    val dtf = DataClassField(1,2)
    val jsonf = JSON.toJSONString(dtf)
    println(jsonf)
    val clzf = DataClassField::class
    println(clzf.javaObjectType)
    val dt3 = JSON.parseObject(jsonf,clzf.javaObjectType)
    println(dt3)

    val dts = DataClassSimple(1,2)
    val jsons = JSON.toJSONString(dts)
    println(jsons)
    val clzs = DataClassSimple::class
    println(clzs.javaObjectType)
    val dt2 = JSON.parseObject(jsons,clzs.javaObjectType)
    println(dt2)


    val list =  mutableListOf<DataClassSimple>(dts)
    var jsonM = JSON.toJSONString(list)
    println(jsonM)
    val dtM = JSON.parseArray(jsonM,clzs.javaObjectType)
    println(dtM)




    //println(JSON.toJSON(dt))
    //TestClz.test(DataClass(1,2))
    //val gson = GsonBuilder().create()
    //gson.toJson(dt, System.out)
}


data class DataClassSimple(val a : Int, val b : Int)
data class DataClass(@JSONField(name="aa")val a : Int, @JSONField(name="bb")val b : Int)
data class DataClassField(@field:JSONField(name="aaa")val a : Int, @field:JSONField(name="bbb")val b : Int)

主干的代码是没有问题的,版本:1.2.38-preiview-09

@qiushui95
Copy link
Author

您这是用IntelliJ IDEA运行的?我用IntelliJ IDEA测试也是正常的,只是Android Studio测试就不行

@kimmking
Copy link
Contributor

kimmking commented Sep 3, 2017

好,我明天试试AS

@wenshao
Copy link
Member

wenshao commented Sep 3, 2017

@qiushui95
Copy link
Author

已测试,1.1.63.android也存在同样的问题

@lilikk2004
Copy link

可不可以提供一个运行的demo看看怎么能稳定在kotlin解析,现在我各种尝试都没法运行

@ZYRzyr
Copy link

ZYRzyr commented Sep 7, 2017

同问
Android Studio Canary 3.0 Beta4
kotlin version 1.1.4-3

com.alibaba:fastjson:1.2.38com.alibaba:fastjson:1.1.63.android都是报这个错。

@wenshao
Copy link
Member

wenshao commented Sep 8, 2017

很抱歉,之前都是在Intellj中做的验证的,这个周末跟进哈

@wenshao
Copy link
Member

wenshao commented Sep 17, 2017

在Android Studio编译的类也重现不了。。。

wenshao added a commit that referenced this issue Sep 17, 2017
@ZYRzyr
Copy link

ZYRzyr commented Sep 18, 2017

那就很尴尬了

@neil4dong
Copy link
Contributor

@ZYRzyr 你尝试跑一下这个testcase试试呢。 看跟你的有没有差异呢

@ZYRzyr
Copy link

ZYRzyr commented Sep 18, 2017

@neil4dong
我这儿不行。

@barryhippo
Copy link

我的AS里面也出现这个问题,后来发现是Class.forName("kotlin.reflect.jvm.internal.KClassImpl") 这里出错了。
然后加上compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" 就可以了

wenshao added a commit that referenced this issue Jul 17, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants