解析JSON Swift 3字典

解析JSON Swift 3字典,json,swift,parsing,dictionary,swift3,Json,Swift,Parsing,Dictionary,Swift3,我试图通过这个JSON链接从NHL获得所有31个团队。下面是该文件的外观: { "sports":[ { "name":"hockey", "slug":"hockey", "id":70, "uid":"s:70", "leagues":[ { "name":"National Hockey League",

我试图通过这个JSON链接从NHL获得所有31个团队。下面是该文件的外观:

{
   "sports":[
      {
         "name":"hockey",
         "slug":"hockey",
         "id":70,
         "uid":"s:70",
         "leagues":[
            {
               "name":"National Hockey League",
               "slug":"nhl",
               "abbreviation":"nhl",
               "id":90,
               "uid":"s:70~l:90",
               "groupId":9,
               "shortName":"NHL",
               "teams":[
                  {
                      ...team info....
                  }......
我目前在函数中有一个do语句,试图循环遍历“teams”数组中的所有31个条目:


我知道我必须在“if let entries”这一行进行更深入的挖掘,但我似乎无法获得我想要的数据。提前感谢。

首先,为什么这么多教程建议/人们使用
.mutableContainers
,尽管对象永远不会发生变异,而且讽刺的是,结果大多分配给im可变对象

不要那样做。通过省略参数不传递任何选项

第二,不要对抗斯威夫特强大的类型系统。使用本机集合类型
Array
Dictionary
,不要注释编译器可以推断的类型

为了方便起见,让我们创建一个类型别名:

typealias JSONDictionary = [String:Any]

if let parsedData = try JSONSerialization.jsonObject(with: data!) as? JSONDictionary,
sports
的值是一个数组(由
[]
表示)

枚举数组并获取键
leagues
的值,该键也是一个数组

      for sport in sports {
          print("sport ", sport["name"] as? String ?? "n/a")
          if let leagues = sport["leagues"] as? [JSONDictionary] {
联盟进行同样的操作
并获得
团队

             for league in leagues {
                print("league ", league["name"] as? String ?? "n/a")
                if let teams = league["teams"] as? [JSONDictionary] {
                for team in teams {
解析JSON非常简单,只有两种集合类型和四种值类型

                }  
             }
          }
      }
   }
}

提示:
parsedData[“sports”]
是一个数组,而不是字典。我只是稍微修改了一下代码。让条目行正常工作,但我无法深入到“运动”数组中的“联赛”数组中。不要使用Swift使用
NSDictionary
NSArray
。@CalebRudnicki如果这解决了您的问题,请将答案标记为正确
             for league in leagues {
                print("league ", league["name"] as? String ?? "n/a")
                if let teams = league["teams"] as? [JSONDictionary] {
                for team in teams {
                }  
             }
          }
      }
   }
}