Helenr
2019-05-22 15:02:33
JSON和Object Literal Notation有什么區別?有人能告訴我使用“Object Literal Notation”和JSON對象定義的JavaScript對象之間的主要區別是什么?根據一本JavaScript書,它說這是一個使用Object Notation定義的對象:var anObject = { property1 : true, showMessage : function (msg) { alert(msg) }};在這種情況下,為什么它不是JSON對象?僅僅因為它沒有使用引號定義?
5 回答

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
實際上沒有“JSON對象”這樣的東西。
JSON規范是將數據編碼為字符串的語法。人們稱之為“JSON對象”(在javascript中)實際上只是一個普通的javascript對象,它(可能)已經從有效的JSON字符串反序列化,并且可以很容易地重新序列化為有效的JSON字符串。這通常意味著它只包含數據(而不是函數)。這也意味著沒有日期,因為JSON沒有日期類型(可能是關于JSON最痛苦的事情;)
此外,(側面咆哮...)當人們談論“JSON對象”時,他們幾乎總是指在頂層有“花括號”的數據。這很好地對應于javascript對象。但是,JSON規范不要求在JSON字符串的頂層有一個“花括號”對象。在頂層有一個列表,甚至只有一個值,這是完全有效的JSON。因此,雖然每個“JSON對象”對應于有效的JSON,但并非所有有效的JSON字符串都對應于我們稱之為“JSON對象”的東西?。ㄒ驗樽址梢员硎玖斜砘蛟又担?/p>

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
JSON是JavaScript的對象文字符號的子集。
換句話說,有效的JSON也是有效的JavaScript對象文字符號,但不一定是相反的方式。
除了閱讀文檔,正如@Filix King建議的那樣,我還建議使用JSONLint在線JSON驗證器。這就是我如何知道JSON對象的鍵必須是字符串。
添加回答
舉報
0/150
提交
取消