2015-10-06 92 views
0

我想獲取數據drom json數組,這是我正在嘗試的代碼,事情是我想只獲取這個json中的名字從json數組中獲取數據swift 2

{ 
"tag": "getuser", 
"success": 1, 
"error": 0, 
"uid": "56108b7e651ad2.95653404", 
"user": { 
    "name": "2", 
    "phone": "2", 
    "email": "2" 
     } 
    } 

我tryied這個

   let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as! NSDictionary 

       let name = jsonData["user"] 
       print("Nombre del usuarioes: \(name)") 

但這打印整個用戶數據,姓名,電話和電子郵件,我如何能夠只打印的名稱或唯一的電子郵件?

回答

2

你不要使用庫,你不要使用鍵值編碼。

你已經在使用這個下標爲你的字典用同樣的方法:

let name = jsonData["user"] 

,你只需要繼續下標找到自己的價值。

實施例:

do { 
    let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options: []) as! NSDictionary 
    let user = jsonData["user"]! 
    let name = user["name"] 
    print(name) 
} catch { 
    print(error) 
} 

即使更好地與安全解纏:

do { 
    if let data = urlData, let jsonData = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary { 
     if let user = jsonData["user"] as? NSDictionary, let name = user["name"] as? String { 
      print(name) 
     } 
    } 
} catch { 
    print(error) 
} 

注:在JSON,詞典由{}定義和陣列由[]定義。你在這裏有一個字典,包含一個字典,而不是一個數組(參考你的問題標題)。

0

一個偉大的圖書館解碼JSON是SwiftyJSON

可以從JSON獲得子腳本化數據,像這樣

import SwiftyJSON 
if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { 
    let json = JSON(data: dataFromString) 
    let name = json["user"]["name"].string 
    print(name) 
} 
+0

有沒有辦法做到這一點,沒有圖書館? – altexo

0

用你的代碼,然後通過這個從jsonData得到現場:

let name = jsonData.valueForKeyPath("user.name") as! String 
let email = jsonData.valueForKeyPath("user.email") as! String