kotlin fastjson:defalut constructor not found
2018-03-29 16:53
459 查看
JSON.parseObject(string, XXXXXXXXXXXXXXXX::class.javaObjectType)在kotlin中,数据类使用data class
这是fastjson在kotlin语言下生成实体类的方式,但是会经常出现很多问题
问题:defalut constructor not found
1.data class 参数生成默认值
如:data class A (var a: String = "")
2.前面的解决方式只在fastjson版本号小于1.2.24时起作用,在高于这个版本时还是会出现这个问题,跟踪fastjson源码发现paramNames = TypeUtils.getKoltinConstructorParameters(clazz);
public static String[] getKoltinConstructorParameters(Class clazz) { if (kotlin_kclass_constructor == null && !kotlin_class_klass_error) { try { Class class_kotlin_kclass = Class.forName("kotlin.reflect.jvm.internal.KClassImpl"); kotlin_kclass_constructor = class_kotlin_kclass.getConstructor(Class.class); kotlin_kclass_getConstructors = class_kotlin_kclass.getMethod("getConstructors"); Class class_kotlin_kfunction = Class.forName("kotlin.reflect.KFunction"); kotlin_kfunction_getParameters = class_kotlin_kfunction.getMethod("getParameters"); Class class_kotlinn_kparameter = Class.forName("kotlin.reflect.KParameter"); kotlin_kparameter_getName = class_kotlinn_kparameter.getMethod("getName"); } catch (Throwable e) { kotlin_class_klass_error = true; } } ... }
从红色标记的类来看,fastjson中
getKoltinConstructorParameters()使用了kotlin.reflect.***但是这个包默认的情况下工程没有api(android 3.0中),所以会导致无法找到这些类
解决:api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
相关文章推荐
- kotlin使用com.alibaba.fastjson.JSONException: default constructor not found
- Kotlin - com.alibaba.fastjson.JSONException: default constructor not found
- fastjson混淆后default constructor not found.
- com.alibaba.fastjson.JSONException: default constructor not found. class ……
- com.alibaba.fastjson.JSONException: default constructor not found. class com.anerfa.axdblue_code.ho
- JSON parse error: Can not construct instance of model.Class: no suitable constructor found
- fastjson解析json时报错 class not has default constructor
- java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON
- Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson.JSONObject
- fastjson解析json时报错 class not has default constructor
- Android开发fastjson错误:JSONException: default constructor not found. class com.xx...
- Spring 4.x org.springframework.http.converter.json.MappingJacksonHttpMessageConverter ClassNotFoundException:
- 用JSON报的一个错误java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeExcept
- Not found org.springframework.http.converter.json.MappingJacksonHttpMessageConve配置文件中报错
- Parameter 'source' not found. Available parameters are [0, 1, param1, param2],json输出接口遇到的问题
- SSM框架搭建java.lang.ClassNotFoundException: org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
- java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException 异常解决方案
- JSON FILE NOT FOUND?
- org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [si
- Exception in thread "main" com.alibaba.fastjson.JSONException: autoType is not support. com.accord.f