簡體   English   中英

如何通過使用Swift從JSON中提取數據

[英]How can I pull data from JSON by using swift

我一直在嘗試將JSON字符串轉換為字典值,但無法正常工作,我得到的是空值。 在嘗試提取數據之前,我檢查了所有JSON,因此顯然我在這里做錯了

let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options:    
   NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary

var items = [[String:String]()]
var item:AnyObject

var authorDictionary:AnyObject

for var i = 0; i < jsonResult["item"]?.count; i++ {
                items.append([String:String]())
                item = (jsonResult["items"] as? [[NSObject:AnyObject]])!
                items[i]["content"] = item["content"] as? String
                items[i]["title"] = item["title"] as? String
                items[i]["publishedDate"] = item["published"] as? String
                authorDictionary = item["author"] as! NSDictionary
                items[i]["author"] = item["displayName"] as? String
}
println(items)

結果就是我得到的:[[:]]

我是JSON新手,有人可以向我解釋我該怎么做以及我做錯了什么嗎?

如果聲明了正確的類型(字典數組),則可以直接在jsonResult["items"]進行迭代。

然后,在循環中,您每次必須創建一個新字典,用從JSON響應中獲取的數據填充此字典,然后將新字典追加到字典的items數組中:

var items = [[String:String]]()

for item in jsonResult["items"] as! [[String:AnyObject]] {
    var newDict = [String:String]()
    newDict["content"] = item["content"] as? String
    newDict["title"] = item["title"] as? String
    newDict["publishedDate"] = item["published"] as? String
    newDict["author"] = item["displayName"] as? String
    items.append(newDict)
}

至於authorDictionary ,因為它是一個簡單的字典而不是數組,所以如果您在循環中為它分配一個值,則每次都會覆蓋它,最后您所擁有的只是最后一個對象的作者。

看一下這個

     let jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary



            var items = [[String:String]()]
            var item:AnyObject
            var authorDictionary:AnyObject

            for var i = 0; i < jsonResult["items"]!.count; i++
            {
                items.append([String:String]())

                item = (jsonResult["items"] as! [NSDictionary])[i]

                items[i]["content"] = item["content"] as! NSString as String

                items[i]["title"] = item["title"] as! NSString as String

                items[i]["publishedDate"] = item["published"] as! NSString as String

                authorDictionary = item["author"] as! NSDictionary

                items[i]["author"] = authorDictionary["displayName"] as! NSString as String
            }

            println(items)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM