Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在swift中循环嵌套json对象?_Arrays_Json_Swift_Api_Loops - Fatal编程技术网

Arrays 如何在swift中循环嵌套json对象?

Arrays 如何在swift中循环嵌套json对象?,arrays,json,swift,api,loops,Arrays,Json,Swift,Api,Loops,我一直在试图检索邮政编码 来自以下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].addr

我一直在试图检索邮政编码 来自以下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"
               ]
            }
         ]
      }
   ]
}

我已经得到了以下问题的答案…问题是give 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 

        }
    }

这是以下各项的模型。。。。。。。。。。。结构映射模型:可解码{let results:[结果]let状态:String let plus_-code:compoundCode}结构复合代码:可解码{let-compoundCode:String}结构结果:可解码{let-address_-components:[地址_-components]}结构地址_-components:可解码{let-long_-name:Int}将这些信息添加到您的问题中,注释中的代码很难阅读。在这种情况下,pin码到底是什么,你想访问哪个字段?我是说邮政编码…我只需要带邮政编码的字典…我的bad@RajatKotian请点击标签下方的编辑按钮来解决您的问题。完成!!现在,我如何使用邮政编码而不是城市名称访问long_名称