SwiftyJSON 读取 JSON 数组问题

Posted

技术标签:

【中文标题】SwiftyJSON 读取 JSON 数组问题【英文标题】:SwiftyJSON Reading JSON Array issue 【发布时间】:2015-06-23 10:04:52 【问题描述】:

我正在尝试使用我的代码读取如下所示的 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 字符串中, 是字典的分隔符,而 [] 是数组的分隔符。

编辑:

根据您的评论,是的,您可以遍历数组:

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

【讨论】:

它现在正在工作。我想我必须将它放入 for 循环中才能获取所有值。【参考方案2】:

这样你就可以使用SwiftyJSON获取你的json对象:

//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

希望这是你需要的。

【讨论】:

以上是关于SwiftyJSON 读取 JSON 数组问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire + SwiftyJSON 获取 JSON 数组

通过解析 JSON-SwiftyJSON 创建一个 Class 对象数组

在 SwiftUI 上迭代 JSON 数组(使用 SwiftyJson 解析)

需要帮助使用 SwiftyJSON 使用 JSON 数据填充数组

如何使用 SwiftyJSON(在 Swift 中)基于 JSON 对象数组创建对象数组?

如何从 JSON 数组 SwiftyJSON 中获取数据?