Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

to Parse JSON to NSArray in Swift

Tags:

json

ios

swift

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..?

like image 618
umon Avatar asked Jan 28 '26 01:01

umon


1 Answers

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))
                        }
                    }
                }
            }
        }
    })
like image 88
Ramesh_T Avatar answered Jan 30 '26 18:01

Ramesh_T



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!