如何快速遍历嵌套的json对象?

问题描述 投票:-2回答:1

我一直在尝试检索邮政编码来自以下Google API,但无法遍历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"
               ]
            }
         ]
      }
   ]
}
arrays json swift api loops
1个回答
0
投票
我已经得到以下问题的答案...问题是给定JSON对象的键“ long_name”有多个值。解决方案是遍历“ address_components”并查找唯一的JSON对象中“类型”键的值。例如,在这种情况下,键“ 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 } }


0
投票
我已经得到以下问题的答案...问题是给定JSON对象的键“ long_name”有多个值。解决方案是遍历“ address_components”并查找唯一的JSON对象中“类型”键的值。例如,在这种情况下,键“ 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 } }

© www.soinside.com 2019 - 2024. All rights reserved.