2013-01-06 58 views
4

所以我目前從我的服務器返回一個JSON對象。如果我在XCode中打印responseObject,我得到以下內容:爲什麼有些字典鍵有引號,其他字典鍵在從調試器打印時沒有?

Printing description of responseObject: 
{ 
order = 3; 
"picture_bucket_name" = test; 
"picture_creation_date" = "2013-01-06T21:49:54.546Z"; 
"picture_identifier" = 61; 
"picture_url_with_bucket" = "test/pictures/sop/steps/test_default_320_320.png"; 
"sub_order" = 0; 
} 

爲什麼訂單鍵不在「」中?這是唯一的一個Number,我必須使用NumberFormatter從NSString轉換爲NSNumber。這是爲什麼?

+0

我想這只是Xcode的一個特點。這是你的例子中唯一沒有下劃線的鍵。爲了可讀性,他們可能會忽略它。地道的JSON應該引用每一個關鍵字。 – Chris

回答

4

通常,沒有任何空格和其他特殊字符的單個字在字典鍵的控制檯中顯示時沒有任何引號。例如: - 上述示例中的密鑰order和值test。這有助於保持可讀性。將這些其他單詞用引號括起來確保可讀性。

+0

我明白了。現在,爲什麼我必須做newStep.order = [f numberFromString:[responseObject valueForKey:@「order」]];對於我的訂單,我可以簡單地做newStep.subOrder = [responseObject valueForKey:@「sub_order」]; ,即使它們都被要求在我的「newStep」對象中是NSNumber? – abisson

+0

在目標c中,「order」代表一個變量名,而「order」代表一個字符串文字。當你在你的代碼中使用時,兩者都不一樣。以上僅適用於在控制檯中顯示。我不確定你在這裏提到的這個'newStep.order'是什麼。第一個應該是一個NSNumber對象,第二個應該是字符串左右。 – iDev

+0

抱歉缺乏一致性。如果你看看粘貼的輸出,我試圖使用[responseObject valueForKey:@「order」]作爲一個NSNumber,但Xcode告訴我這是一個字符串,我需要使用Formatter轉換它。但是,正如你所看到的,沒有「」。爲什麼它告訴我這是一個字符串? – abisson