提出问题,同时使用swift从JSON中获取数据

我正在使用swift从JSON中检索数据。 我是JSON的新手。 我不怎么检索这个嵌套的值。 我的JSON格式如下。

//JSON DATA { "data": [ { "category_id": 1, "category_name": "category1", "category_icon": "", "category_child": [ { "sub_category_id": 11, "sub_category_name": "subcategoryname1", "sub_category_icon": "" }, { "sub_category_id": 12, "sub_category_name": "subcategoryname2", "sub_category_icon": "" } ] }, { "category_id": 2, "category_name": "category2", "category_icon": "", "category_child": [ { "sub_category_id": 21, "sub_category_name": "subcategoryname12", "sub_category_icon": "" }, { "sub_category_id": 22, "sub_category_name": "subcategoryname22", "sub_category_icon": "" } ] } ] } 

我尝试了一些方法。 但是,我没有在字典中find合适的元素。 我的代码如下:

 ATTEPMT 1: var dict: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary for(var i = 0; i < (dict.valueForKey("data") as NSArray).count; i++) { self.categFromJson.addObject((dict.valueForKey("data") as NSArray) .objectAtIndex(i)) } for(var i = 0; i < (categFromJson.valueForKey("category_child") as NSArray).count; i++) { self.sub_ct_FromArr.addObject((categFromJson.valueForKey("category_child") as NSArray) .objectAtIndex(i)) } for(var i = 0; i < (sub_ct_FromArr.valueForKey("sub_category_name") as NSArray).count; i++) { self.sub_ct_name_arr.addObject((sub_ct_FromArr.valueForKey("sub_category_name") as NSArray) .objectAtIndex(i)) } //ATTEMPT 2 var dict: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary for(var i = 0; i < (dict.valueForKey("data") as NSArray).count; i++) { categFromJson.addObject((dict.valueForKey("data") as NSArray) .objectAtIndex(i)) sub_ct_FromArr.addObject((categFromJson.valueForKey("category_child") as NSArray) .objectAtIndex(i)) sub_ct_name_arr.addObject((sub_ct_FromArr.valueForKey("sub_category_name") as NSArray) .objectAtIndex(i)) } 

但是,对于这两种尝试,最后的输出是错误的和相同的。 Bcos,编码如下。

 //CODING println(sub_ct_name_arr.objectAtIndex(0)) //Output for this Code (subcategoryname1,subcategoryname2) //REQUIRED Output subcategoryname1 

请引导我。 我不知道那是什么问题。

首先,可视化您拥有的数据types非常重要。

你的数据类型

然后你可以得到像这样的根对象,其中的对象是哪一个types的:

 let dict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary let dataArray = dict["data"] as! [[String:AnyObject]] // The array of dictionaries for object in dataArray { let category_id = object["category_id"] as! Int let category_name = object["category_name"] as! String // etc let category_child = object["category_child"] as! [[String:AnyObject]] for child in category_child { let sub_category_id = child["sub_category_id"] as! Int let sub_category_name = child["sub_category_name"] as! String println(sub_category_id) println(sub_category_name) } } 

如果你有很多的解码,你也可以考虑使用像SwiftyJSON这样的库。