如何在Swift中分析parsing的JSON中的数组?

我正在使用返回JSON的API,看起来像这样

{ "boards":[ { "attribute":"value1" }, { "attribute":"value2" }, { "attribute":"value3", }, { "attribute":"value4", }, { "attribute":"value5", }, { "attribute":"value6", } ] } 

在Swift中,我使用两个函数来获取并parsingJSON

 func getJSON(urlToRequest: String) -> NSData{ return NSData(contentsOfURL: NSURL(string: urlToRequest)) } func parseJSON(inputData: NSData) -> NSDictionary{ var error: NSError? var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary return boardsDictionary } 

然后我使用它

 var parsedJSON = parseJSON(getJSON("link-to-API")) 

JSONparsing得很好。 当我打印出来

 println(parsedJSON["boards"]) 

我得到了数组的所有内容。 但是我无法访问每个单独的索引。 我认为这是一个数组,因为我可以

 parsedJSON["boards"].count 

正确的长度被返回。 但是,如果我试图通过使用访问各个指标

 parsedJSON["boards"][0] 

XCodeclosures语法高亮,并给我这个:

XCode错误

而代码将不会编译。

这是XCode 6的错误,还是我做错了什么?

Swift中的字典访问返回一个Optional,所以你需要强制这个值(或者使用if let语法)来使用它。

这工作: parsedJSON["boards"]![0]

(它可能不应该崩溃的Xcode,虽然)

看看这里: https : //github.com/lingoer/SwiftyJSON

 let json = JSONValue(dataFromNetworking) if let userName = json[0]["user"]["name"].string{ //Now you got your value } 

你可以创build一个variables

 var myBoard: NSArray = parsedJSON["boards"] as! NSArray 

然后你可以访问任何你在“董事会”

 println(myBoard[0]) 

处理这个问题的正确方法是检查字典键的返回值:

  if let element = parsedJSON["boards"] { println(element[0]) }