2015-05-26 47 views
0

我從服務器獲取以下JSON響應:NSJSONSerialization.JSONObjectWithData改變字段類型

{ 
    "userId":"123456789", 
    "displayName":"display name" 
} 

當我使用NSJSONSerialization.JSONObjectWithData,然後打印出結果NSDictionary我在控制檯中看到以下內容:

用戶id = 123456789 顯示名= 「顯示名稱」

爲什麼JSONObjectWithDatauserId字段類型從字符串更改爲數字?

+0

它沒有。這只是在控制檯中打印時的表示。如果您檢查其類型,字段仍然是字符串。 – Moritz

回答

1

它沒有。 JSON反序列化尊重數據類型並保持它。你不能從簡單的描述日誌中知道數據類型,你需要實際詢問這個類。描述日誌會引用一些東西,如果它對於人類讀者更爲合理,就像描述中的空格一樣,但在某些情況下也會省略引號。

1

它沒有。

不要從它的日誌表示中推斷變量類型,只是測試。以此爲例說明一個遊樂場,例如:

let str = "{\"userId\":\"123456789\",\"displayName\":\"display name\"}" 
if let data = str.dataUsingEncoding(NSUTF8StringEncoding), 
    jsonResult = try? NSJSONSerialization.JSONObjectWithData(data, options: []), 
    jsonObject = jsonResult as? [String:String], 
    id = jsonObject["userId"] { 
     print("User ID is " + id) 
}