如何在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 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]) }