我有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
,但在这里看不到如何应用。
如何显示正确的数据?
答案 0 :(得分:1)
之所以这样显示,是因为您尚未实现toString()
方法。您可以在toString()
类中实现RetrofitVariables
,也可以将RetrofitVariables
声明为data class
并由编译器实现。