Json 表Swift

发布时间: 2017/3/5 5:27:50
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这篇文章跟老帖有人帮我类似的问题。

我目前开发应用哪个列表用户对象通过向 web 服务,这种格式在 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"
    }
}

我寻找一种方法来检索每个词典价值书名和价格,把它们放在表中。

我使用 (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

谢谢你的帮助。

解决方法 1:

此示例 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] ,然后我们访问的值 objects 键,然后,我们投此值的字典数组︰ [[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)
            }
        }
    }
}
赞助商