2016-06-28 79 views
0

我有一个JSON文件和这个人对象。每个人都有不同的信息。这是JSON文件的结构。使用Swift解析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) 

    } 

因为名称数组仍为空。

+0

你需要学习这样的回答: - http://stackoverflow.com/questions/25621120/simple-and -clean-way-to-convert-json-string-to-object-in-swift –

+0

@ ei-captain-v2-0此问题与iOS没有特别的关系。所有的方法都来自基金会。 – Moritz

+1

结构的顶层是一个数组。人字典也包含一个不必要的字典。 – Desdenova

回答

1

[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"]) 
      } 
     } 
    }