fastjson 不支持kotlin data class

s2j5cfk0  于 2021-11-27  发布在  Java
关注(0)|答案(1)|浏览(498)

报错:
com.alibaba.fastjson.JSONException: default constructor not found. class com.xxx.xxx.model.Config
原类:
data class Config(val kinds : ArrayList , val sort : ArrayList)

w3nuxt5m

w3nuxt5m1#

基于 java 反射的 json 库通病,包括 gson 也是。解决方案:

  1. 不要有参数默认值
  2. 所有参数全部加上默认值

只有这样生成的 jvm 代码才会有无参构造函数。

另外 gson 和 fastjson 还无法正确处理 kotlin 的非空变量(会用反射强制赋值一个null给声明非空的变量)

因为 java 反射原理限制上述问题是无法彻底解决的,所以使用 kotlin 的话还是尽早迁移到 moshi 吧。

相关问题