arrays - 如何快速遍历嵌套的 json 对象?
问题描述
我一直在尝试从以下 google API 中检索 Postal_code,但无法遍历 JSON 数组
这是解析JSON的函数
func parseJson(Json:Data) {
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(MapModel.self, from: Json)
let postal_code = decodedData.results[0].address_components[0].long_name
print(postal_code)
} catch {
print(error)
return
}
}
这是模型:
struct MapModel: Decodable {
let results : [Result]
let status: String
let plus_code : compoundCode
}
struct compoundCode: Decodable {
let compound_code: String
}
struct Result: Decodable {
let address_components:[address_components]
}
struct address_components: Decodable {
let long_name : Int
}
这是通过 API 的 JSON
{
"plus_code":{
"compound_code":"5WXX+7J Thane, Maharashtra, India",
"global_code":"7JFJ5WXX+7J"
},
"results":[
{
"address_components":[
{
"long_name":"400604",
"short_name":"400604",
"types":[
"postal_code"
]
},
{
"long_name":"Thane",
"short_name":"Thane",
"types":[
"administrative_area_level_2",
"political"
]
}
]
}
]
}
解决方案
我已经得到了以下问题的答案...问题是给定 JSON 对象的键“long_name”有多个值。解决方案是遍历“address_components”并查找唯一值JSON对象中的“type”键..例如,在这种情况下,键“long_name”有两个值“thane”和“400604”,但唯一键是可用于区分这些的类型
这是以下问题的语法!!
func parseJson(Json:Data)
{
let decoder = JSONDecoder()
do{
let decodedData = try decoder.decode(MapModel.self, from: Json)
for item in decodedData.results[0].address_components{
if item.types[0] == "postal_code"{
print(item.long_name)
}
}
}
catch{
print(error)
return
}
}
推荐阅读
- android - SharedPreferences 检查导致布尔值的空指针异常
- awk - 如何使用 grep、sed 或 awk 删除所有不包含字母表中的字母的行?
- python - 在简单的 Django 模板中显示来自 API 的结果 JSON
- javascript - 在 javascript 中捕获 Onesignal 数据
- julia - 一个字典数组到一个 DataFrame 中 ONE go in Julia
- javascript - 我的应用需要 mongoDB DataProvider 函数
- javascript - 两个函数没有运行 OnClick?
- javascript - 将图像从html画布发送到烧瓶python不起作用
- javafx - JavaFX Scenebuilder:TextArea 和 TextField 更改字体
- javascript - RXJS:在运算符之间分配然后重用值