2015-06-23 65 views
0

我想用我的代码阅读下面的json数组数据,但我得到空结果所有的时间,而我可以打印整个数据。请问哪里是我的问题?SwiftyJSON阅读JSON数组问题

我读过这个主题,但我无法得到结果。 Topic Link

{"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) 
      }) 
    }) 
} 

回答

1

json["Cars"]是一个数组,因此,例如通过SwiftyJSON得到的第一项:

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

在JSON字符串,{}是分隔符rs代表字典,而[]是数组的分隔符。

编辑:

按照您的评论,是的,你可以循环阵列上:

if let cars = json["Cars"].array { 
    for car in cars { 
     println(car["Brand"]) 
    } 
} 
+0

它正在工作。我想我必须把它放在for循环才能获得所有的值。 – CAN

+0

是的。我已经更新了我的答案。 – Moritz

0

这样你可以得到你的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 

希望这是你所需要的。