to Parse JSON to NSArray in Swift
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. That payments array contain inside the course.
Just replace that json["payments"]
array with 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))
}
}
}
}
}
})
umon
I'm an Food Engineer, 26 years old and from Turkey. I hate My Job. I got a Android Programming Course, and i was coding with Android, Java and Swift Programming Languages since 2015.. Also, I'm a cyclist and (very) amateur photographer..
Updated on June 04, 2022Comments
-
umon almost 2 years
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.
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" } }]
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..?