在Moshi 1.5和Kotlin

时间:2017-10-08 18:46:02

标签: android kotlin retrofit2 moshi

我面临的问题有点奇怪,因为当我有一个普通的模型类,我用作改装2的响应体模型时,我会得到一些意想不到的错误,假设

open class Example : RealmObject(){
    @Json(name = "token")
    var token: String? = null
    @Json(name = "data")
    var data: RealmList<Data>? = null
}

和数据类是

open class Data : RealmObject(){
    @Json(name = "info")
    var info: String? = null
}

我的代码崩溃显示ClassNotFoundException(我在调试模式下运行),如果删除KotlinJsonAdapterFactory(),则崩溃不会发生,但数据值不存在,即在调试模式下它出现&#39 ; s好像它不存在,即Example的对象只显示标记值,数据不存在甚至不存在null,但我需要KotlinJsonAdapterFactory()因为我使用了annonations所以上面是只是一个实验。

我找到的唯一解决方案是将两个类转换为数据类并且它完美地工作(当然我已经删除了RealmObject扩展并使RealmList成为普通列表),但是我需要扩展RealmObject()类和数据无法打开类,Realm db需要该模型。

所以我恢复了1.4删除了KotlinJsonAdapterFactory(),一切正常,即使看起来像proguard,所以我该怎么办才能升级到Moshi 1.5。

此外,我已经在我的示例代码中更新了一些数据对象是RealmList的东西,可能是为什么它被忽略/当响应出现时可能是因为我的MosmL的RealmListAdapter被忽略了???

我会附上我的moshi和改造实例的片段

Moshi`instance

Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.add(RealmListAdapter.FACTORY)
.build()

改造实例

Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(okHttpClient)
.build()

0 个答案:

没有答案