在Swift中将JSON解析为NSArray [英] to Parse JSON to NSArray in Swift
本文介绍了在Swift中将JSON解析为NSArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个json数据. 我可以将所有项目作为字符串或字典获取,但是我无法将付款"项目作为数组获取. 我想从付款"中获取数据并转换NSDictionary 我尝试了几种方法,但没有成功.
i have an json data. i can get all items as string or dictionary, but i couldn't get "payments" item as array.. i want to get datas from "payments" and to convert NSDictionary i tried a few ways but i didn't make it.
那是我的JSON数据.
That is my JSON data.
[{
"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))
}
}
}
}
}
})
我没有发现什么问题..你能帮我吗?.
i didnt find what is wrong.. can u help me pls..?
推荐答案
您在此行中确实犯了错误:
You did mistake in this line:
if let paymentsTemp = json["payments"] as? NSArray
在这一行代码中,您将从json字典访问Payments数组.该付款数组包含在课程内部.
In this line of code you are accessing the payments array from json dictionary. That payments array contain inside the course.
只需将json["payments"]
数组替换为courseTemp["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))
}
}
}
}
}
})
这篇关于在Swift中将JSON解析为NSArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文