android - JSON 返回不可读的数据;如何获得正确的对象?(科特林,Android 工作室)
问题描述
我JSON
看起来像这样:
[{"name":"John","age":30,"vehicle":"bicycle"},
{"name":"Bob","age":32,"vehicle":"walking"}]
这interface
@GET("lnjb8")
fun findPosts(): Call<List<RetrofitVariables>>
反序列化的变量:
class RetrofitVariables(name: String, age: String, vehicle: String) {}
并且在MainActivity()
:
val myRetrofit = Retrofit.Builder()
.baseUrl("https://api.myjson.com/bins/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val repository = myRetrofit.create(RetrofitCalls::class.java)
val call = repository.findPosts()
...随后是异步调用:
call.enqueue(object: Callback<List<RetrofitVariables>> {
override fun onResponse(call: Call<List<RetrofitVariables>>?, response: Response<List<RetrofitVariables>>?) {
val jsonVariables = response!!.body()
//THIS SHOULD PRODUCE THE PROPER DATA
jsonVariables!!.forEach { println("TAG testing" + it) }
}
override fun onFailure(call: Call<List<RetrofitVariables>>?, t: Throwable?) {
println("TAG FAIL")
}
})
jsonVariables!!.forEach { println("TAG testing" + it) }
应该给我数据,但它只是给出testingcom.slothmode.retrofitexercise.RetrofitVariables@83098f7
显然,它收集数据,因为它得到了响应,但我一定错过了如何正确显示它。在以前的项目中,我value
在 x.value.toString() 中使用过,但我看不出它是如何应用在这里的。
如何显示正确的数据?
解决方案
之所以这样显示,是因为您还没有实现toString()
方法。您可以toString()
在RetrofitVariables
类中实现,也可以声明RetrofitVariables
为data class
并由编译器实现。
推荐阅读
- python - Django - /statements/ int() 参数中的 TypeError 必须是字符串、类似字节的对象或数字,而不是“AnonymousUser”
- sql - 使用 group by 查找 sum 的 SQL 查询
- ecmascript-6 - VSCode Intellisense not fully working with ES6 imports?
- tabulator - 如何保留在 setColumns() 上编辑的单元格?
- highcharts - 网格线仅在列范围内的 0 上
- python - 检查函数在 python 3.7 中是否是异步的
- javascript - 如何捕获 id 以激活或停用按钮
- javascript - Angular UI Grid垂直滚动问题
- python - Python Exception No Description with Pandas read_sql
- javascript - 浮点数到字符串的转换 - JS