[英]to Parse JSON to NSArray in Swift
i have an json data. 我有一个json数据。 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.
我可以把所有项目作为字符串或字典,但我不能得到“付款”项目作为数组..我想从“付款”获得数据和转换NSDictionary我尝试了几个方法,但我没有成功。
That is my JSON data.
那是我的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" } }]
And that is my code 那是我的代码
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
In this line of code you are accessing the payments array from json dictionary. 在这行代码中,您将从json字典访问付款数组。 That payments array contain inside the course.
该付款数组包含在课程内。
Just replace that json["payments"]
array with courseTemp["payments"]
只需用
courseTemp["payments"]
替换json["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))
}
}
}
}
}
})
Try this: 尝试这个:
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))
}
}
}
}
}
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.