JSON返回不可读的数据;如何获得合适的物品? (科特林,Android Studio)

时间:2018-12-14 11:07:36

标签: android json kotlin retrofit

我有fclose(txt); // read-only file, ignore close error if (fclose(bin) == -1) { perror("closing output file"); // exit program or return error code or something } ,看起来像这样:

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) }。显然,它收集到数据是因为它得到响应,但是我一定错过了如何正确显示它。在以前的项目中,我在x.value.toString()中使用了testingcom.slothmode.retrofitexercise.RetrofitVariables@83098f7,但在这里看不到如何应用。

如何显示正确的数据?

1 个答案:

答案 0 :(得分:1)

之所以这样显示,是因为您尚未实现toString()方法。您可以在toString()类中实现RetrofitVariables,也可以将RetrofitVariables声明为data class并由编译器实现。