在JSON中解析嵌套元素

时间:2016-06-14 05:57:31

标签: json swift

我似乎无法解析以下json:

["data": {
    companies =     (
    );
    "login_status" = success;
    "rs_customer" =     {
        id = "<null>";
        name = "<null>";
        status = "<null>";
    };
    user =     {
        email = "email@email.com";
        id = 0;
        lastlogin = "06/14/16 12:44 am";
        name = "Jayson Tamayo";
        password = mypassword;
        phone = "112345";
    };
}, "status": success]

我通过以下方式检索JSON:

HTTPGetJSON("http://myurl.com") {
                (data: Dictionary<String, AnyObject>, error: String?) -> Void in
                if error != nil {
                    print(error)
                } else {
                    print(data)
                    let status = data["status"] as? String
                    print(status)

                }
            }

当我打印&#34;状态&#34;有用。但是当我尝试使用数据[&#34; name&#34;]时,我得到了零。我也尝试了数据[&#34;数据&#34;] [&#34;名称&#34;]但我也没有。

1 个答案:

答案 0 :(得分:0)

您的主要对象是字典。

在&#34;数据&#34;关键,有几个值:&#34;公司&#34;是一个数组,&#34; rs_customer&#34;是字典,状态是字符串和&#34;用户&#34;是一本字典。

所以,为了得到用户,如果data是我们在问题中看到的对象,你只需要转换为正确的类型,如下所示:

if let content = data["data"] as? [String:AnyObject] {
    if let user = content["user"] as? [String:AnyObject] {
        if let name = user["name"] as? String {
            print(name)
        }   
    }
}

您还可以链接展开以获得更简单的代码:

if let content = data["data"] as? [String:AnyObject],
        user = content["user"] as? [String:AnyObject],
        name = user["name"] as? String {
    print(name)
}