Ios 在Swift中将JSON解析为NSArray
我有一个json数据。 我可以获取字符串或字典形式的所有项目,但无法获取数组形式的“付款”项目。。 我想从“付款”中获取数据并将其转换为字典 我尝试了一些方法,但没有成功 这是我的JSON数据Ios 在Swift中将JSON解析为NSArray,ios,json,swift,Ios,Json,Swift,我有一个json数据。 我可以获取字符串或字典形式的所有项目,但无法获取数组形式的“付款”项目。。 我想从“付款”中获取数据并将其转换为字典 我尝试了一些方法,但没有成功 这是我的JSON数据 [{ "last_name": "aaa", "course": { "course_name": "bob", "payments": [ { "date": "cc", }, {
[{
"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))
}
}
}
}
}
})
3.我没发现出了什么问题。。你能帮我吗?试试这个:
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))
}
}
}
}
}
}
})
您在这一行中犯了错误:
if let paymentsTemp = json["payments"] as? NSArray
在这行代码中,您正在从json字典访问payments数组。课程中包含的付款数组
只需将json[“付款”]
数组替换为courseTemp[“付款”]
出什么事了?你还没有解释实际发生的任何事情。你说的都是没发生的事。告诉我们发生了什么。欢迎来到SO。当你发布一个问题的帮助信息时,你需要提供具体的、详细的信息,说明哪里出了问题。“…我没有做到”没有用。它编译吗?它在运行时会崩溃吗?它是否运行时没有崩溃,但无法提供所需的结果?如果它给出了编译器错误或崩溃,那么错误行是什么?如果结果与您的预期不符,请详细解释它们与您的预期有何不同。
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))
}
}
}
}
}
})