Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift中将JSON解析为NSArray_Ios_Json_Swift - Fatal编程技术网

Ios 在Swift中将JSON解析为NSArray

Ios 在Swift中将JSON解析为NSArray,ios,json,swift,Ios,Json,Swift,我有一个json数据。 我可以获取字符串或字典形式的所有项目,但无法获取数组形式的“付款”项目。。 我想从“付款”中获取数据并将其转换为字典 我尝试了一些方法,但没有成功 这是我的JSON数据 [{ "last_name": "aaa", "course": { "course_name": "bob", "payments": [ { "date": "cc", }, {

我有一个json数据。 我可以获取字符串或字典形式的所有项目,但无法获取数组形式的“付款”项目。。 我想从“付款”中获取数据并将其转换为字典 我尝试了一些方法,但没有成功

这是我的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))
                    }
                }
            }
        }
    }
})
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))
                        }
                    }
                }
            }
        }
    })