我在使用Retrofit + RxJava解析对象数组时遇到问题
JSON仅包含此数组
{
"files": [
{
"id": 10,
"notificationId": 15,
"name": "cats.ncs",
"dateTime": "2019-01-07T17:34:45"
}
]
}
翻新服务
@GET("/api/FileApi/files")
fun files(): Observable<FilesResponse>
FilesResponse在哪里
data class FilesResponse(
@SerializedName("files")
var files: List<FileElement>
)
和FileElement
data class FileElement(
@SerializedName("id")
var id: Long,
@SerializedName("notificationId")
var notificationId: Long,
@SerializedName("name")
var name: String,
@SerializedName("dateTime")
var dateTime: String
)
当我运行它时,我总是得到
CallObjectMethodA的返回类型不匹配 io.reactivex.Observable ApiService.files()
那么如何解析仅包含数组的JSON?
答案 0 :(得分:1)
尝试使用RxJava2 Adapter
集成
implementation 'com.squareup.retrofit2:adapter-rxjava2:{retrofit_version}'
改造客户端设置
new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create()) //option 1
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.newThread())) //option 2
.build();
答案 1 :(得分:0)
少量笔记
首先,您可能需要向我们展示如何致电ApiService.files()
可能出了什么问题
它的命名方式
可能是什么解决方案
调用这样的方法
ApiService
.files()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
// Handle the values here
},{
// Handle the error here
},{
// Handle the completion here (optional)
})
不是这样
ApiServices.files()
也不
var fileResponse = ApiServices.files()
确保如上所述,您已经正确设置了改造构建器
除此之外,如果没有如何调用的代码,我们将无法为您提供深入的帮助。