使用 Swift 解析 JSON 的问题

Posted

技术标签:

【中文标题】使用 Swift 解析 JSON 的问题【英文标题】:Issue parsing JSON with Swift 【发布时间】:2016-06-28 12:04:12 【问题描述】:

我有一个包含此人对象的 JSON 文件。每个人都有不同的信息。这是 JSON 文件的结构。

[
  
    "person": 
      "name": "Dani",
      "job": "Artist",
      "country": "FR",
      "sold": "992",
      "email": "Dani",
      "facebook": "Artist",
      "twitter": "Dani",
      "instagram": "Artist",
      "snapchat": "Dani",
      "photo": "Artist"
    
  ,
  
    "person": 
      "name": "Alex",
      "job": "",
      "country": "TU",
      "sold": "992",
      "email": "Dani",
      "facebook": "Artist",
      "twitter": "Dani",
      "instagram": "Artist",
      "snapchat": "Dani",
      "photo": "Artist"
    
  
]

我能够打开 json 文件,但无法解析它。这是我的代码

 func lodData()
    
        let data = NSData(contentsOfURL: url!)



        do 
            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

            if let person = json["person"] as? [[String: AnyObject]] 
                for p in person 
                    if let name = p["name"] as? String 
                        names.append(name)
                    
                
            
         catch 
            print("error serializing JSON: \(error)")
        

        print(names) 

    

因此,名称数组仍然为空。

【问题讨论】:

你需要研究这个答案:- ***.com/questions/25621120/… @ei-captain-v2-0 这个问题与 ios 无关。所有方法均来自 Foundation。 结构的顶层是一个数组。并且人物字典也被一个不必要的字典包裹着。 【参考方案1】:

person is [String: String] 表示字典不是数组......你可以这样做

 if let data = json as? [[String: AnyObject]] 
      for p in data 
          if let person = p["person"] as? [String: String]
              names.append(person["name"])
          
       
  

【讨论】:

以上是关于使用 Swift 解析 JSON 的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Swift (NSArray) 解析 JSON

IOS/Swift/JSON:使用 swiftyJSON 解析嵌套的 JSON

使用swift解析包含索引的json数据?

使用未解析的标识符 'json' (Swift 3) (Alamofire)

使用 EasyMapping (Swift) 解析 Json 数组

需要帮助使用 Alamofire 使用 Swift 解析 JSON