kotlin fastjson:defalut constructor not found

1897 ワード

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"