如何从JSON 2维结构(嵌套字典)中获取值?

时间:2014-09-04 08:21:23

标签: json xcode swift tableview afnetworking

我很难从二维JSON结构中获取值并将其放入TableView中。 我使用AFNetworking来获取JSON数据。此代码构建于Xcode 6 beta 7:

func apiConnetion() {
        var result: NSArray = []
        manager.GET("https://example.com/",
            parameters: nil,
            success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
                result = responseObject as NSArray
                println(result)
                dispatch_async(dispatch_get_main_queue(), {
                    self.commentData = result
                    self.commentTableView!.reloadData()
                })

            },

            failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
                println("error")
                println(" \(error.localizedDescription ) ")

        })

    }

println(result)打印出如下结构:

{
"id" = 1;
"name" = "Test1";
"category" =
           "id" = 1;
           "name" = "justtest";
}
{
"id" = 2;
"name" = "Test2";
"category" =
         "id" = 2;
         "name" = "justtest1";
}

如何获取类别名称?

1 个答案:

答案 0 :(得分:1)

您有NSArray个条目。使用indexPath.row中的cellForRowAtIndexPath选择正确的条目。这会返回一个字典。选择与"类别"对应的值返回NSDictionary?因为字典访问总是返回可选值,以防密钥不存在。使用?打开它。一个?比这里的!更安全,如果"类别"那将会崩溃试图解开nil。不是关键。现在查找" name"返回NSString?。最后使用 nil coalescing operator 来获取字符串或空字符串,如果" category"或"名称"没有有效的密钥。

let name = result[indexPath.row]["category"]?["name"] ?? ""