在Swift中parsingJSON到NSArray

我有一个JSON数据。 我可以得到所有的项目作为string或字典,但我不能得到“付款”项目作为数组..我想从“支付”获取数据,并转换NSDictionary我试了几种方法,但我没有做到这一点。

这是我的JSON数据。

[{ "last_name": "aaa", "course": { "course_name": "bob", "payments": [ { "date": "cc", }, { "date": "dd", } ], "course_time": "ee" } }, { "last_name": "ggg", "course": { "course_name": "bob", "payments": [{ "date": "ddd", }, { "date": "ff", }], "course_time": "hh" } }] 

这是我的代码

 let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) var errori: NSError? let jsonArr = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &errori) as NSArray for json in jsonArr { if let last_name = json["last_name"] as? String { let course = Course() if let courseTemp = json["course"] as? NSDictionary { if let course_name = courseTemp["course_name"] as? String { course.course_name = course_name } var payments = course.payments if let paymentsTemp = json["payments"] as? NSArray { println("That's OK!") for payment in paymentsTemp { let date = payment["date"] as String let pay = payment["payment"] as String payments.append(Payment(date: date, payment: pay)) } } } } } }) 

我没有发现什么是错的..你能帮我吗?

你在这一行错误:

 if let paymentsTemp = json["payments"] as? NSArray 

在这行代码中,您正在从json字典访问付款数组。 该付款数组包含在课程内。

只需用courseTemp["payments"]replacejson["payments"]数组

 let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) var errori: NSError? let jsonArr = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &errori) as NSArray for json in jsonArr { if let last_name = json["last_name"] as? String { let course = Course() if let courseTemp = json["course"] as? NSDictionary { if let course_name = courseTemp["course_name"] as? String { course.course_name = course_name } var payments = course.payments if let paymentsTemp = courseTemp["payments"] as? NSArray { println("That's OK!") for payment in paymentsTemp { let date = payment["date"] as String let pay = payment["payment"] as String payments.append(Payment(date: date, payment: pay)) } } } } } }) 

尝试这个:

 let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in let responseString = NSString(data: data, encoding: NSUTF8StringEncoding) var errori: NSError? let jsonArr = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error: &errori) as NSArray for json in jsonArr { if let last_name = json["last_name"] as? String { let course = Course() if let courseTemp = json["course"] as? NSDictionary { if let course_name = courseTemp["course_name"] as? String { course.course_name = course_name } var payments = course.payments // as Ramesh_T mentioned if let paymentsTemp = courseTemp["payments"] as? NSArray { println("That's OK!") for payment in paymentsTemp { if let paymentTemp = payment as? [String: String] { let date = paymentTemp["date"] let pay = paymentTemp["payment"] payments.append(Payment(date: date, payment: pay)) } } } } } } })