JSON格式數(shù)據(jù)
JSON 格式(JavaScript Object Notation 的縮寫)是一種用于數(shù)據(jù)交換的文本格式,2001年由 Douglas Crockford提出浪册,目的是代替繁瑣笨重的XML格式费彼。
JSON 是一種語法用來序列化對象勾徽、數(shù)組、數(shù)值、字符串非春、布爾值和 null 袁勺。它基于 JavaScript 語法雹食,但與之不同:JavaScript不是JSON,JSON也不是JavaScript期丰。
每個 JSON 對象群叶,就是一個值。JSON 對值的類型和格式有嚴(yán)格的規(guī)定:
復(fù)合類型的值只能是數(shù)組或?qū)ο蠖鄣矗荒苁呛瘮?shù)街立、正則表達(dá)式對象、日期對象埠通。
簡單類型的值只有四種:字符串赎离、數(shù)值(必須以十進(jìn)制表示)、布爾值和null(不能使用NaN, Infinity, -Infinity和undefined)端辱。
字符串必須使用雙引號表示梁剔,不能使用單引號。
對象的鍵名必須放在雙引號里面舞蔽。
數(shù)組或?qū)ο笞詈笠粋€成員的后面憾朴,不能加逗號。
前導(dǎo)零是禁止的(在 JSON.stringify 零將被忽略喷鸽,但在 JSON.parse 它將拋出 SyntaxError)众雷;小數(shù)點(diǎn)后必須至少有一位數(shù)字。
JSON格式數(shù)據(jù)如何表示對象
JSON對象是一個無序的「鍵-值」集合做祝,對象的鍵名必須用雙引號包裹砾省,最后一個成員后面不能加逗號。
以下三種寫法都可以表示對象:
{}
{"key1": "value1"} // string 對應(yīng) "key1"混槐,value 對應(yīng) "value1"
{"key1": "value1", "key2": "value2"}
window.JSON
window.JSON是瀏覽器的內(nèi)置對象(本地化的JSON對象)编兄,用來檢測對JSON的支持情況。
如果在舊的瀏覽器中使用JSON声登,需要JavaScript庫狠鸳。在JavaScript中執(zhí)行解析和序列化效率往往不高揣苏,所以為了提高執(zhí)行速度,現(xiàn)在新的瀏覽器原生擴(kuò)展了對JSON的支持件舵,可以直接通過JavaScript來調(diào)用JSON了卸察。這種本地化的JSON對象被納入了ECMAScript 5標(biāo)準(zhǔn),成為了下一代JavaScript語言的一部分铅祸。
把JSON 格式的字符串轉(zhuǎn)換為 JS 對象
JSON.parse方法用于將JSON字符串轉(zhuǎn)化成對象坑质,如果傳入的字符串不是有效的JSON格式,JSON.parse方法將報錯临梗。
把 JS對象轉(zhuǎn)換為 JSON 格式的字符串
JSON.stringify方法用于將一個值轉(zhuǎn)為字符串涡扼。該字符串符合 JSON 格式,并且可以被JSON.parse方法還原盟庞。
需要注意的是:
- 對于原始類型的字符串吃沪,轉(zhuǎn)換結(jié)果會帶雙引號
- 如果原始對象中,有一個成員的值是undefined什猖、函數(shù)或 XML 對象票彪,這個成員會被過濾。
- 如果數(shù)組的成員是undefined卸伞、函數(shù)或 XML 對象抹镊,則這些值被轉(zhuǎn)成null
- 正則對象會被轉(zhuǎn)成空對象
- JSON.stringify方法會忽略對象的不可遍歷屬性锉屈。