在Swift中将JSON解析为NSArray [英] to Parse JSON to NSArray in Swift

查看:88
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆