【问题标题】:Why am I getting null values when using gson to parse a json object in android studio?为什么在android studio中使用gson解析json对象时得到空值?
【发布时间】:2020-05-27 09:25:30
【问题描述】:

我正在阅读以下 JSON 并使用 GSON 将其转换为一个对象,然后我可以使用该对象来访问所述对象的属性以帮助在我的应用中显示图像。

但是,我想使用的字段之一 imageURL 正在返回空值。查看json(下面的链接)我们可以清楚地看到它不为null。

https://api.letsbuildthatapp.com/youtube/home_feed

我已经使用调试器演示了我为每个 imageURL 获得的空值:

Debugger output

所以对象给了我 imageURL 的空值,但链接没有。怎么回事?

这是我编写的用于获取和解析 JSON 对象的函数:

private fun fetchJson() {
        println("Attempting to fetch JSON")

        val url = "https://api.letsbuildthatapp.com/youtube/home_feed"
        val request = Request.Builder().url(url).build()
        val client = OkHttpClient()

        client.newCall(request).enqueue(object : Callback {
            override fun onResponse(call: Call, response: Response) {
                val body = response.body?.string()
                println(body)

                val gson = GsonBuilder().create()

                val homeFeed = gson.fromJson(body, HomeFeed::class.java)

                runOnUiThread {
                    recyclerView_main.adapter = MainAdapter(homeFeed)
                }
            }

            override fun onFailure(call: Call, e: IOException) {
                println("failed to execute request")
            }
        }
         )

    }

我的 HomeFeed 课程是这样的:


class HomeFeed(val videos: List<Video>)

class Video(val id: Int, val name: String, val link: String, val imageURL: String, numberOfViews: Int,
            val channel: Channel)

class Channel(val name: String, val profileImageUrl: String)

我认为这应该足够详细,但如果需要更多信息,请告诉我。

谢谢。

【问题讨论】:

  • 你能添加你的对象模型吗...
  • 我刚刚补充了

标签: android json android-studio gson


【解决方案1】:

试试这个对象,你应该为 vals 使用相同的名称,“imageUrl”而不是“imageURL”:

data class HomeFeed(
    val user: User,
    val videos: List<Video>
)

data class User(
    val id: Int,
    val name: String,
    val username: String
)

data class Video(
    val channel: Channel,
    val id: Int,
    val imageUrl: String,
    val link: String,
    val name: String,
    val numberOfViews: Int
)

data class Channel(
    val name: String,
    val numberOfSubscribers: Int,
    val profileImageUrl: String
)

【讨论】:

  • 我花了一个小时试图解决这个问题.....这只是一个错字:(谢谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多