如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android studio 上使用 klaxon 从 thingspeak 解析 json 以获取字段值?
Android Kotlin + Klaxon - 解析 JSON 根数组