0

我的 JSON

[
 
    "first_flight": "2010-12-08",
    "flickr_images": [
      "https://i.imgur.com/9fWdwNv.jpg",
      "https://live.staticflickr.com/8578/16655995541_7817565ea9_k.jpg",
      "https://farm3.staticflickr.com/2815/32761844973_4b55b27d3c_b.jpg",
      "https://farm9.staticflickr.com/8618/16649075267_d18cbb4342_b.jpg"
    ],
     "flickr_images": [
      "https://farm8.staticflickr.com/7647/16581815487_6d56cb32e1_b.jpg",
      "https://farm1.staticflickr.com/780/21119686299_c88f63e350_b.jpg",
      "https://farm9.staticflickr.com/8588/16661791299_a236e2f5dc_b.jpg"
    ],
 ]

我的代码

val result = URL("https://api.spacexdata.com/v4/dragons").readText()
        val parser: Parser = Parser()
        val stringBuilder: StringBuilder = StringBuilder(result)
        jsonArray = parser.parse(stringBuilder) as JsonArray<JsonObject>
    ....
    **rocket.image = jsonArray.string("flickr_images")[i]?.get(0).toString() - doesnt work**

java.lang.ClassCastException: com.beust.klaxon.JsonArray cannot be cast to java.lang.String

4

1 回答 1

0
"flickr_images": [
  "https://i.imgur.com/9fWdwNv.jpg",
  "https://live.staticflickr.com/8578/16655995541_7817565ea9_k.jpg",
  "https://farm3.staticflickr.com/2815/32761844973_4b55b27d3c_b.jpg",
  "https://farm9.staticflickr.com/8618/16649075267_d18cbb4342_b.jpg"
]

第一点是 JsonObject 是键值对。JsonArray 是 JsonObject 的集合。所以 flickrimages 不是一个正确的 jsonArray Format.flickrimages 是一个 List of String.so 错误来了。

并且根据您的问题,您无法从两个 flickrimages 中获取值,因为此 json 有两个具有相同名称“flickrimages”的键。因此,如果您使用键“flickrimages”获取值,则默认情况下只有最后添加的一个值会出现。

所以最好改变来自url的formatofjson

于 2021-06-10T09:05:44.813 回答