【问题标题】:Kotlin Crashs JSONKotlin 崩溃 JSON
【发布时间】:2021-06-08 06:19:48
【问题描述】:

我的 JSON 正文返回到以下内容,但它一直在崩溃。

val body = response.body!!.string()
                         println(body)
                         val gson = GsonBuilder().create()
                         val nowplayingFeed = gson.fromJson(body, NowPlayingJson::class.java)

它的意思是调用


//NOW PLAYING DATA
class NowPlayingJson(val data: List<DataP>)

class DataP(val track: List<NowPlayingTrack>)

class NowPlayingTrack(val artist: String, val title: String, val imageurl: String, val type: String, val url:String)

但由于某种原因,NowPlayingJson 导致文件崩溃。 当我将其设置为 DataP

val nowplayingFeed = gson.fromJson(body, DataP::class.java)

它不会崩溃,但会加载 Null,因为它需要先读取数据,因此无法读取轨道。

JSON

{"data":[{"track":{"artist":"COEO","title":"Cabrio Mango (Original Mix)","imageurl":"https://storage.googleapis.com/ad-system/AdStichr-Logo.png","url":"https://www.adstichr.com/","type":"S"}}]}

【问题讨论】:

  • 如果您使用data class 代替您的课程,您将获得可读的toString,因此您可以println(nowplayingFeed) 并查看有用的内容。

标签: kotlin gson


【解决方案1】:

在您的示例 JSON 中,track 的值是一个对象。在DataP track 是一个列表。

应该改为class DataP(val track: NowPlayingTrack) 吗?

【讨论】:

  • 这是正确答案。 data 有一个轨道列表,但轨道是一个简单的对象而不是一个列表。错误消息是:“引起:java.lang.IllegalStateException:预期 BEGIN_ARRAY 但在第 1 行第 20 列路径 $.data[0].track 处为 BEGIN_OBJECT”
猜你喜欢
  • 1970-01-01
  • 2017-02-01
  • 2019-04-07
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多