ios - Json 表格 View Swift

标签 ios json swift tableview nsdictionary

这篇文章是在一篇旧文章之后,有人帮助我解决了类似的问题。

我目前正在开发一个应用程序,它通过向网络服务发出请求来列出用户对象,该网络服务以这种格式发送 JSON 响应:

{
"objects": [
    {
        "id": "28",
        "title": "test",
        "price": "56 €",
        "description": "kiki",
        "addedDate": "11-07-2015",
        "user_id": "1",
        "user_name": "CANOVAS",
        "user_zipCode": "69330",
        "category_id": "1",
        "category_label": "VEHICULES",
        "subcategory_id": "1",
        "subcategory_label": "Voitures",
        "picture": "",
        "bdd": {},
        "picture_url": "http://jdl-barreme-orange.dyndns.org/WEBSERVICE/pictures/test.JPG"
    },
    {
        "id": "27",
        "title": "ferrari",
        "price": "55 €",
        "description": "rouge jantes",
        "addedDate": "11-07-2015",
        "user_id": "1",
        "user_name": "CANOVAS",
        "user_zipCode": "69330",
        "category_id": "1",
        "category_label": "VEHICULES",
        "subcategory_id": "1",
        "subcategory_label": "Voitures",
        "picture": "",
        "bdd": {},
        "picture_url": "http://jdl-barreme-orange.dyndns.org/WEBSERVICE/pictures/ferrari.JPG"
    }
}

我搜索了一种方法来为每个字典检索值 title 和 price 并将它们放在 tableView 中。

我使用的代码(tableviewcontroller):

if let jsonArray = NSJSONSerialization.JSONObjectWithData(urlData!, options: nil, error: nil) as? [[String:AnyObject]] {
for dict in jsonArray {
    if let title = dict["title"] as? String {
        println(title)
    }
}
}

但是它不起作用,我放了一个断点,Xcode 在这里停止解释:

for dict in jsonArray

感谢您的帮助。

最佳答案

此示例 JSON 无效:它在最后一个 } 之前缺少 ]

但我想这只是一个粘贴错字,您使用的 JSON 格式正确,所以您的问题是您需要首先访问字典的 objects 键。

此键包含一个字典数组的值,因此我们将其用作类型转换:

if let json = NSJSONSerialization.JSONObjectWithData(urlData!, options: nil, error: nil) as? [String:AnyObject] {
    if let objects = json["objects"] as? [[String:AnyObject]] {
        for dict in objects {
            if let title = dict["title"] as? String {
                println(title)
            }
        }
    }
}

首先我们将 NSJSONSerialization.JSONObjectWithData 的结果转换为字典:[String:AnyObject],然后我们访问对象的值> 键,然后我们将此值转换为字典数组:[[String:AnyObject]]

请记住,对于 JSON 格式,字典的格式为 {},数组的格式为 []

您的示例是 {key:[{},{}]} 所以它是一个包含字典数组的字典。


Swift 2.0 更新

if let json = try? NSJSONSerialization.JSONObjectWithData(urlData!, options: []) as? [String:AnyObject] {
    if let objects = json?["objects"] as? [[String:AnyObject]] {
        for dict in objects {
            if let title = dict["title"] as? String {
                print(title)
            }
        }
    }
}

关于ios - Json 表格 View Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32071599/

相关文章:

javascript - 使用 JSON 将包含 SQL 查询结果的数组返回到网页

ios - SQLite 数据在模拟器应用程序启动之间丢失

ios - 使用 Instruments 监控 AVPlayer 的网络数据使用情况

ios - iPhone 5(和 iPhone 6)启动屏幕上的黑条

ios - CoreStore 通过事务删除对象来更新关系。编辑不起作用

PHP 将新属性附加到对象时出现问题?

java - 将 PostgreSQL JSON 列映射到 Hibernate 实体属性

ios - 导航 Controller 工具栏不显示 UIBarButtonItem

ios - CoreAudio 的首选语言

ios - UICollectionView 在弹跳动画期间剪辑单元格