2017-03-17 90 views
-2

我得到JSON像這樣從服務器:JSON轉換成陣列迅速

array('id' => '1', 'name' => 'Radni nalog 1', 'threadTypeList' => array(
      array('id' => '1', 'name' => 'Crvena'), 
      array('id' => '2', 'name' => 'Plava'), 
      array('id' => '3', 'name' => 'Zelena'), 
      array('id' => '4', 'name' => 'Žuta'), 
     ), 'token' => 'xxuoE73VKwyKk1KmGTy26P72cgsuneMzNOes'); 

我怎麼能這個JSON轉換到字典中。這是我的轉換功能,但它是完全錯誤的,我堅持它。

func convertStringToDictionary2(text: String) -> [AnyObject]? { 
    if let data = text.dataUsingEncoding(NSUTF8StringEncoding) { 
     do { 
      let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as? [AnyObject] 
      return json 
     } catch { 
      print("Something went wrong") 
     } 
    } 
    return nil 
} 

,當我試圖讓數據是這樣的:

let result = convertStringToDictionary(jsonString as String) 

//creating array of objects threadType and populating threadTypeList property 
let resultThreadList = (result?["threadTypeList"] as! String) 

let new = convertStringToDictionary2(resultThreadList as String) 

我得到一個錯誤:無法投類型的值 '__NSArrayI'(0x10f20dd88)到 '的NSString'(0x10df90c40)。

我能夠從json中獲取所有變量,除了** threadTypeList **這是一個數組數組。

+0

你爲什麼要將resultThreadList轉換爲String? –

回答

0

錯誤

Could not cast value of type '__NSArrayI' (0x10f20dd88) to 'NSString' (0x10df90c40)

表示:

你要訪問的對象是Array,但你希望得到一個String這是不可能的

let resultThreadList = result?["threadTypeList"] as! [[String:AnyObject]] 

resultThreadList意味着陣列以及所述PHP類型'threadTypeList' => array(但認爲這是一個PHP(締合)陣列array('id' => '1'實際上是一個字典。