2011-06-30 71 views
53

JSON對待這些都一樣嗎?或者他們是整數和布爾值的混合?JSON值1或0 - int或布爾值

var data = 
{ 
    "zero" : 0, 
    "one" : 1, 
    "false" : 0, 
    "true" : 1, 
    "0" : false, 
    "1" : true 
} 
+4

你是指數值?那麼,有數字類型,還有布爾類型。因此,這些值是不一樣的。 –

+7

順便說一句,'true'和'false'是保留字,所以您將無法使用點符號來檢索屬性值。例如,'data.zero'返回'0',但'data.false'拋出一個解析錯誤(在某些瀏覽器中)('data ['false']'會起作用(=返回'0'))。 –

回答

63

JSON是傳輸數據的格式。
它沒有平等的概念。

JSON 解析器將布爾值和數字視爲不同的類型。

+49

這個答案可以通過這種方式得到更清楚的解釋:*「Phil,你提到了JSON,這是一種格式;你要問的是JSON解析器,實際上,JSON解析器......等等。」*作爲頂級講解員的人總是會把幽默,溫和的諷刺,機智的倒立的直覺,令人驚訝的開場引導,以及任何形式的風格的遊戲,無論如何......用於絕對的,全部的解釋力。 S.,我指導一個像你這樣的年輕人蔘加溫斯頓丘吉爾的着作 - 你會喜歡*我早年的生活*,這是一種主語言的典範。乾杯 – Fattie

+8

這個答案包含了它需要包含的東西,並且沒有無用的東西。事實上,我已經將它縮短爲*由解析器決定*。 – 2014-10-27 16:44:37

+21

這是一個毫無意義的答案 - 甚至是錯誤的,因爲實際上有一個官方的[JSON規範](http://www.json.org),它顯示了'true'和'false'字面值不同於數字。任何不能區分的解析器都不是JSON解析器。 –

83

truefalse是實際的布爾值,其餘爲整數。有關更多信息,請參見http://json.org/

+3

到json.org的鏈接在這裏很有用。我來到這個問題,看看JSON是否使用引號圍繞值true和false。 –

+14

爲了幫助那些找到這個帖子的人尋找相同的信息,答案是「不」。 JSON中的值'true'和'false'沒有引號。 –

7

如前所述,在JSON級別,0和false是不一樣的;數據類型是數字與布爾值。 但JSON處理庫可以選擇進行轉換;特別是在不具有本機布爾類型的語言/平臺上。在這種情況下,可以使用其他表示法(空字符串或0表示false)。

此外,處理庫也可能強制類型:例如,如果期望布爾值,則可以接受某些數字/字符串值(或JSON'null'標記)。 由於不同語言的數據類型選擇的差異,這是相當普遍的。

23

我更喜歡使用0/1而不是真/假,因爲0/1只消耗1字節,而真/假消耗4/5字節。