Android 如何从json解析数据
我试图解析json数据,但有点奇怪,因为它没有显示正确的数据,但如果我试图在浏览器上调用json,它就有正确的数据 这就是我解析json数据的方式Android 如何从json解析数据,android,json,httprequest,Android,Json,Httprequest,我试图解析json数据,但有点奇怪,因为它没有显示正确的数据,但如果我试图在浏览器上调用json,它就有正确的数据 这就是我解析json数据的方式 doAsync { val url = localhost.getMovie() val request = okhttp3.Request.Builder().url(url).build() val client = OkHttpClient() uiThread {
doAsync {
val url = localhost.getMovie()
val request = okhttp3.Request.Builder().url(url).build()
val client = OkHttpClient()
uiThread {
client.newCall(request).enqueue(object : Callback, okhttp3.Callback {
override fun onResponse(call: okhttp3.Call?, response: okhttp3.Response?) {
val body = response?.body()?.string()
println(body)
uiThread {
val gson = GsonBuilder().create()
val movieFeed = gson.fromJson(body, Movie2Response::class.java)
Log.v("body", ""+body)
Log.v("feed", ""+movieFeed.data)
uiThread {
}
}
}
override fun onFailure(call: okhttp3.Call?, e: IOException) {
println("failed")
}
})
}
}
V/body: {"data":[{"title":"Aquaman","description":""........
V/feed: [com.mqa.android.moviereview.model.Movie2@7509e04, com.mqa.android.moviereview.model.Movie2@890afed, com.mqa.android.moviereview.model.Movie2@9834e22, com.mqa.android.moviereview.model.Movie2@f02d0b3, com.mqa.android.moviereview.model.Movie2@d3b9670, com.mqa.android.moviereview.model.Movie2@4d55de9, com.mqa.android.moviereview.model.Movie2@cac2a6e, com.mqa.android.moviereview.model.Movie2@94fc50f, com.mqa.android.moviereview.model.Movie2@d9ba99c]
电影回应
class Movie2Response (val data: MutableList<Movie2>)
)
这是我从json数据中得到的
doAsync {
val url = localhost.getMovie()
val request = okhttp3.Request.Builder().url(url).build()
val client = OkHttpClient()
uiThread {
client.newCall(request).enqueue(object : Callback, okhttp3.Callback {
override fun onResponse(call: okhttp3.Call?, response: okhttp3.Response?) {
val body = response?.body()?.string()
println(body)
uiThread {
val gson = GsonBuilder().create()
val movieFeed = gson.fromJson(body, Movie2Response::class.java)
Log.v("body", ""+body)
Log.v("feed", ""+movieFeed.data)
uiThread {
}
}
}
override fun onFailure(call: okhttp3.Call?, e: IOException) {
println("failed")
}
})
}
}
V/body: {"data":[{"title":"Aquaman","description":""........
V/feed: [com.mqa.android.moviereview.model.Movie2@7509e04, com.mqa.android.moviereview.model.Movie2@890afed, com.mqa.android.moviereview.model.Movie2@9834e22, com.mqa.android.moviereview.model.Movie2@f02d0b3, com.mqa.android.moviereview.model.Movie2@d3b9670, com.mqa.android.moviereview.model.Movie2@4d55de9, com.mqa.android.moviereview.model.Movie2@cac2a6e, com.mqa.android.moviereview.model.Movie2@94fc50f, com.mqa.android.moviereview.model.Movie2@d9ba99c]
它在身体上显示正确,但在数组中显示为那样。请帮我看看有什么问题。因为我想向微调器显示标题数据,您的数据一切正常。您刚刚忘记将默认实现添加到此对象的日志
class Movie2(/*your fields*/)
只需在上课前添加数据即可。会是那样的吗
data class Movie2(/*your fields*/)
科特林不知道怎么跟你拍电影。如果您想使用默认实现,请使用日志结果显示的代码。真正的问题是log函数
log.v(“feed”和“+movieFeed.data)
。如果要显示漂亮的日志,应通过以下方式重写Movie2
类中的toString()
方法:
打开Movie2
并在编辑器中右键单击->生成->然后单击toString()
覆盖它
对于Kotlin中的数据类,只需在class
关键字之前添加data
json数据中的键是否与Movie2Response的类变量名称匹配?如果json数据中的键与模型类中的变量名称不匹配,您将无法解析它。您将得到JsonParse异常。我还请求您在问题中发布您的模型类和响应json,以便我们能更好地帮助您。我已经为u@RamMandalDid共享了它。您使用json数据键交叉验证了序列化的名称字符串?代码看起来不错,但请在(movieFeed.data中的数据){Log.I(“title”)、“${data.title}的Log.v(“feed”、“+movieFeed.data)下面尝试一下)并查看日志,它打印了电影的标题。@qubaisyndiYantama ai编辑我的答案请检查