如何从SWIFT中的JSON数组中获取数据?

时间:2016-02-21 22:09:06

标签: arrays json swift

from this link我想获得 commonName

我尝试了这个,但它没有用?!

let commonName = object["toLocationDisambiguation"][0]["disambiguationOptions"][1]["place"][2]["commonName"].stringValue

1 个答案:

答案 0 :(得分:1)

选项1(正常)

if let toLocationDisambiguation = object["toLocationDisambiguation"] as? Dictionary<String, AnyObject> {
    if let disambiguationOptions = toLocationDisambiguation["disambiguationOptions"] as? Array<AnyObject> {
        if let first = disambiguationOptions.first as? [String: AnyObject] {
            if let place = first["place"] as? [String: AnyObject] {
                let commonName = place["commonName"] as! String
                print("Common Name: ", commonName)
            }
        }
    }
}

选项2(类型别名)

typealias MyDictionary = [String: AnyObject]
typealias MyArray = [MyDictionary]

if let toLocationDisambiguation = object["toLocationDisambiguation"] as? MyDictionary {
    if let disambiguationOptions = toLocationDisambiguation["disambiguationOptions"] as? MyArray {
        if let first = disambiguationOptions.first {
            if let place = first["place"] as? MyDictionary {
                let commonName = place["commonName"] as! String
                print("Common Name: ", commonName)
            }
        }
    }
}

选项3(类似于Objective-C的SwiftyJSON语法)

看看SwiftyJSON

let object = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! Dictionary<String, AnyObject>
let json = JSON(object)
let commonName = json["toLocationDisambiguation"]["disambiguationOptions"][0]["place"]["commonName"].stringValue
print("Common Name: ", commonName)