[alibaba/fastjson]反序列化Kotlin对象出现异常create instance error

2024-08-30 772 views
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的出现了这个问题。

期待解决

回答

4

去掉默认无参构造器应该就好了

4

不行

3

@wenshao

6

same here