SwiftyJSON Чтение проблемы с массивом JSON

Я пытаюсь прочитать данные массива json, как показано ниже, с моим кодом, но я все время получаю пустой результат, пока могу распечатать все данные. Пожалуйста, где будет моя проблема?

Я читал эту тему, но я не мог получить результат. Ссылка на тему

{"Cars":[{"Brand":"Alfa Romeo"},{"Brand":"Audi"},{"Brand":"BMW"},{"Brand":"Citroen"},{"Brand":"Dacia"},{"Brand":"Fiat"},..........

Мой код

    func getData(){

    var url = "http://test.net/services/test.php"
    var request = HTTPTask()
    request.GET(url, parameters: nil, completionHandler:
        {
            (response:HTTPResponse) in

            var jsonData = response.responseObject as! NSData
            var json = JSON(data: jsonData)

            println("All data \(json)")

            dispatch_async(dispatch_get_main_queue(),
                {
                    println(json["Cars"]["Brand"].stringValue)
            })
    })
}

person CAN    schedule 23.06.2015    source источник


Ответы (2)


json["Cars"] — это массив, поэтому, например, чтобы получить первый элемент через SwiftyJSON:

println(json["Cars"][0]["Brand"].stringValue)

В строке JSON { и } являются разделителями для словарей, а [ и ] — для массивов.

ИЗМЕНИТЬ:

После вашего комментария да, вы можете перебрать массив:

if let cars = json["Cars"].array {
    for car in cars {
        println(car["Brand"])
    }
}
person Eric Aya    schedule 23.06.2015
comment
Сейчас это работает. Я думаю, что мне нужно ввести его в цикл for, чтобы получить все значения. - person CAN; 23.06.2015

Таким образом, вы можете получить свои объекты json, используя SwiftyJSON:

//Get your Data First
let json = JSON(data: data)

//Store your values from car key into Car object so we can get total count.
let Cars = json["Cars"].arrayValue

//Use For loop to get your car Brand 
for i in 0..<Cars.count
{
    println(json["Cars"][i]["Brand"].stringValue)
}

И ваш вывод будет:

Alfa Romeo
Audi
BMW
Citroen
Dacia
Fiat

Надеюсь, это то, что вам нужно.

person Dharmesh Kheni    schedule 23.06.2015