如何在swift中访问嵌套JSON中的数据

时间:2016-04-22 04:34:28

标签: ios arrays json swift swift2

我有json file

我需要获取最新的"id": "article" "createdAt": "2016-04-22T03:38:39.130Z"日期。如何在swift中从请求中获取此数据?

注意:对不起,我是一个快速的新手。

2 个答案:

答案 0 :(得分:2)

let url = "https://cdn.contentful.com/spaces/maz0qqmvcx21/entries?access_token=ae8163cb8390af28cd3d7e28aba405bac8284f9fe4375a605782170aef2b0b48";
var jsonData:NSData?

do{
    jsonData = try NSData(contentsOfURL: NSURL(string: url)!, options: NSDataReadingOptions.DataReadingUncached)
    let jsonObject:AnyObject? = try NSJSONSerialization.JSONObjectWithData(jsonData!, options: NSJSONReadingOptions.AllowFragments)
    if let itemArray = jsonObject?.objectForKey("items") as? NSArray{
        for item in itemArray{
            if let sysItem = item.objectForKey("sys"){
                //this is createdAt
                if let createdAt = sysItem.objectForKey("createdAt") as? String{
                    print("createdAt:\(createdAt)")
                }

                if let contentTypeItem = sysItem.objectForKey("contentType")!.objectForKey("sys"){
                    //this is id
                    if let id = contentTypeItem.objectForKey("id") as? String{
                        print("id:\(id)")
                    }
                }
            }
        }
    }
}catch let err as NSError{
    print("err:\(err)")
}

此代码不使用任何库,但您可以使用SwiftyJSON,这将很容易解析json。

希望得到这个帮助。

答案 1 :(得分:1)

这可以通过简单的方式完成。我假设你已经将你的json解析为字典

你有一个带有项目的键,这是一个字典数组,在你创建的字典里面和id(它更深入到层次结构中,但我会告诉你如何获得它)键。您只需执行此操作即可访问它。

for dict in jsonDict["items"] as! Array<NSDictionary> {
    let sysDict = dict["sys"] as! NSDictionary
    print(sysDict["createdAt"]) //prints all createdAt in the array
    let contentDict = sysDict["contentType"]
    print((contentDict["sys"] as! NSDictionary)["id"]) // prints all ids
}

希望这有帮助。