将任何转换为Kotlin中的ArrayList,改造
我在我的android应用程序中使用Kotlin和Retrofit。 答案是一个类。 具有通用的价值即。 数据:任何?
data class GlobalResponse(@Expose val status: String, @Expose val message: String, @Expose val data: Any?) data class District(@Expose val name:String) @GET("{endpoint}") fun getData( @Path("endpoint") endpoint: String ): Observable<GlobalResponse> RestService.create().getData("res") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> // Ok Log.e("Hello", "Hello") // problem here // Jumps to error-> below Log.e("Name", ((response.data as ArrayList<District>)[0]).name) }, { error -> // do something })
我从服务器获取数据,但无法获取对象的单个值。 日志打印好,但第二个日志不会执行。 然后它会抛出错误。
好的,我终于解决了这个问题。 我所要做的只是使用Gson将数据转换为JSON字符串,然后再将Gson字符串转换为JSON Array对象类。 我以为我可以直接键入演员。 :(因为这是在纯Java中做的id
无论如何,这是代码。
RestService.create().getData("res") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe({ response -> val temp:String = Gson().toJson(response.data) val districtList:ArrayList<District> = Gson().fromJson(temp, genericType<ArrayList<District>>()) Log.e("Name", (districtList[0]).name) }, { error -> // do something }) inline fun <reified T> genericType() = object : TypeToken<T>() {}.type!!