5
class KotlinObject {
var name: String = ""
constructor(name: NameWrapper) {
this.name = name.content
}
constructor()
}
class NameWrapper(val content: String)
public class Main {
public static void main(String[] args) {
System.out.println(JSON.parseObject("{\"name\":\"KotlinObject\"}", KotlinObject.class));
}
}
上面代码将会抛出create instance error, [Ljava.lang.String;@198d6542, public test.KotlinObject(test.NameWrapper) 异常。
从源码来看,fastjson判断如果class是kotlin的将会优先获取带参数的构造函数。也没有看到哪里有关闭kotlin检测的开关,目前我只能将源码复制一份强制isKotlin方法返回false
上面的代码也是早期使用kotlin+fastjson时候的,为了符合javabean的格式,添加了一个默认的无参构造器,最近升级到1.2.58的出现了这个问题。
期待解决