2015-04-15 49 views
1

我使用swift從JSON中檢索數據。我是JSON的新手。我不知道如何檢索這個嵌套值。我的JSON格式如下。提出的問題,同時通過使用swift從JSON中獲取數據

//JSON DATA 
{ 
    "data": [ 
     { 
      "category_id": 1, 
      "category_name": "category1", 
      "category_icon": "", 
      "category_child": [ 
       { 
        "sub_category_id": 11, 
        "sub_category_name": "subcategoryname1", 
        "sub_category_icon": "" 
       }, 
       { 
        "sub_category_id": 12, 
        "sub_category_name": "subcategoryname2", 
        "sub_category_icon": "" 
       } 
      ] 
     }, 
     { 
      "category_id": 2, 
      "category_name": "category2", 
      "category_icon": "", 
      "category_child": [ 
       { 
        "sub_category_id": 21, 
        "sub_category_name": "subcategoryname12", 
        "sub_category_icon": "" 
       }, 
       { 
        "sub_category_id": 22, 
        "sub_category_name": "subcategoryname22", 
        "sub_category_icon": "" 
       } 
      ] 
     } 
    ] 
} 

我試過一些方法。但是,我沒有在字典中找到合適的元素。我的代碼如下:

ATTEPMT 1: 
var dict: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 

     for(var i = 0; i < (dict.valueForKey("data") as NSArray).count; i++) 
     { 
      self.categFromJson.addObject((dict.valueForKey("data") as NSArray) .objectAtIndex(i)) 

     } 

     for(var i = 0; i < (categFromJson.valueForKey("category_child") as NSArray).count; i++) 
     { 
      self.sub_ct_FromArr.addObject((categFromJson.valueForKey("category_child") as NSArray) .objectAtIndex(i)) 

     } 

     for(var i = 0; i < (sub_ct_FromArr.valueForKey("sub_category_name") as NSArray).count; i++) 
     { 
      self.sub_ct_name_arr.addObject((sub_ct_FromArr.valueForKey("sub_category_name") as NSArray) .objectAtIndex(i)) 

     } 


//ATTEMPT 2 
var dict: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 

for(var i = 0; i < (dict.valueForKey("data") as NSArray).count; i++) 
{ 
    categFromJson.addObject((dict.valueForKey("data") as NSArray) .objectAtIndex(i)) 

    sub_ct_FromArr.addObject((categFromJson.valueForKey("category_child") as NSArray) .objectAtIndex(i)) 

    sub_ct_name_arr.addObject((sub_ct_FromArr.valueForKey("sub_category_name") as NSArray) .objectAtIndex(i)) 
} 

但是,對於這兩種嘗試,最終輸出都是錯誤和相同的。 Bcos,編碼如下。

//CODING 
println(sub_ct_name_arr.objectAtIndex(0)) 

//Output for this Code 
(subcategoryname1,subcategoryname2) 
//REQUIRED Output 
subcategoryname1 

請親引導我。我不知道那是什麼問題。

回答

0

首先,瞭解您擁有什麼樣的數據非常重要。

Your data types

然後你就可以得到像這根對象,以下哪個對象是哪種類型:

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

let dataArray = dict["data"] as! [[String:AnyObject]] // The array of dictionaries 

for object in dataArray { 
    let category_id = object["category_id"] as! Int 
    let category_name = object["category_name"] as! String 
    // etc 
    let category_child = object["category_child"] as! [[String:AnyObject]] 
    for child in category_child { 
     let sub_category_id = child["sub_category_id"] as! Int 
     let sub_category_name = child["sub_category_name"] as! String 
     println(sub_category_id) 
     println(sub_category_name) 
    } 
} 

你,如果你有很多的解碼也可以考慮使用像SwiftyJSON庫做。

+0

是.. !!明白了@ericd。如何提高從JSON檢索數據的知識?有沒有網站或教程?請指導我。 –

+0

你可以關注[Ray Wenderlich的SwiftyJSON教程](http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial)。但無論如何,這裏沒有太多的祕密。一旦知道了哪些數據類型由您的JSON對象持有,解碼它就相當簡單。我唯一的建議是經常練習,並閱讀關於此主題的所有文檔。 :) – Moritz

相關問題