【发布时间】:2019-11-23 06:33:06
【问题描述】:
我无法解析 JSON(使用 Moshi)的一些内部部分,这些部分可能变化很大并且高度非结构化。总体来说是这样的:
response: {
items: [{
type: "typeA",
data: {
"1563050214700-001": {
foo: 123 ....
}
}
}, {
type: "typeB",
data: {
"1563050214700-002": {[
// differs a lot from previous one
{bar: 123 .... }
]}
}
}]
}
数据类结构如下:
data class Response(
val items: Map<String,List<Item?>>?
) {
data class Item(
val type: String?,
val data: Map<String,List<DataItem?>>?
) {
data class DataItem(
// members highly unstructured
)
}
}
“DataItem”的架构变化很大。看起来 Moshi codegen 支持可能允许手动解析这些内部数据类的适配器,但我无法找到正确的教程或示例。理想情况下,我希望解析整个 Response,就像它是定义良好的 JSON 一样。
这是我如何使用改造/moshi
@Provides
@Singleton
@MyApp
fun provideMyAppRetrofit(context: Context, @MyApp okHttpClient: OkHttpClient): Retrofit {
return Retrofit.Builder()
.client(okHttpClient)
.addConverterFactory(MoshiConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(context.getString(R.string.APP_BASE_URL))
.build()
}
@Provides
@Singleton
fun provideMyAppApiService(@MyApp retrofit: Retrofit): MyAppApiService {
return retrofit.create(MyAppApiService::class.java)
}
我如何实现这一目标?任何示例或参考实现都会有所帮助。
【问题讨论】:
标签: android json gson retrofit moshi