如何使用 Klaxon 从我的 JSON 文件中的两个数组中获取第一个图像 URL?

Posted

技术标签:

【中文标题】如何使用 Klaxon 从我的 JSON 文件中的两个数组中获取第一个图像 URL?【英文标题】:How to get the first image URL from both arrays from my JSON file using Klaxon? 【发布时间】:2021-08-27 06:11:43 【问题描述】:

我的 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 无法转换为 java.lang.String

【问题讨论】:

【参考方案1】:
"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

【讨论】:

以上是关于如何使用 Klaxon 从我的 JSON 文件中的两个数组中获取第一个图像 URL?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Klaxon 序列化 JSON

如何在 android studio 上使用 klaxon 从 thingspeak 解析 json 以获取字段值?

Android Kotlin + Klaxon - 解析 JSON 根数组

Klaxon 解析空枚举

如何通过 vue js 中的 slug(也存在于 json 文件中)从我的 json 文件中获取文章内容?

如何从我的 json 文件中将某些内容打印到不和谐频道中? - 不和谐.py