首页 > 解决方案 > 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() 中使用过,但我看不出它是如何应用在这里的。

如何显示正确的数据?

标签: androidjsonkotlinretrofit

解决方案


之所以这样显示,是因为您还没有实现toString()方法。您可以toString()RetrofitVariables类中实现,也可以声明RetrofitVariablesdata class并由编译器实现。


推荐阅读