JSON是什么?(JSON和JavaScript對象有什么區(qū)別?)如何把JS對象轉(zhuǎn)化為JSON字符串,又如何把JSON字符串轉(zhuǎn)化為JavaScript對象?
JSON (JavaScript Object Notation)一種簡單的數(shù)據(jù)格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在JavaScript 中處理 JSON 數(shù)據(jù)不需要任何特殊的 API 或工具包。JSON的規(guī)則很簡單: 對象是一個無序的“名稱/值”對集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“名稱/值”對之間使用“,”(逗號)分隔。
它是一種嚴格的js對象的格式,JSON的屬性名必須有雙引號,如果值是字符串,也必須是雙引號;
JSON只是一種數(shù)據(jù)格式(或者叫數(shù)據(jù)形式);
<script>var obj2={};//這只是JS對象var obj3={width:100,height:200};/*這跟JSON就更不沾邊了,只是JS的 對象 */var obj4={'width':100,'height':200};/*這跟JSON就更不沾邊了,只是JS的對象 */var obj5={"width":100,"height":200,"name":"rose"}; /*我們可以把這個稱做:JSON格式的JavaScript對象 */var str1='{"width":100,"height":200,"name":"rose"}';/*我們可以把這個稱做:JSON格式的字符串 */var a=[ {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, {"width":100,"height":200,"name":"rose"}, ]; /*這個叫JSON格式的數(shù)組,是JSON的稍復雜一點的形式 */var str2='['+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ ']' ; /* 這個叫稍復雜一點的JSON格式的字符串 */ </script>
JSON和JS對象區(qū)別對比表
區(qū)別 | Json | Javascript對象 |
含義 | 僅僅是一種數(shù)據(jù)格式 | 表示類的實例 |
傳輸 | 可以跨平臺數(shù)據(jù)傳輸,速度快 | 不能傳輸 |
表現(xiàn) | 1,鍵值對方式,鍵必須加雙引號 2,值不能是方法函數(shù),不能是undefined/NaN | 1,鍵值對方式,鍵不加引號 2,值可以是函數(shù)、對象、字符串、數(shù)字、boolean 等 |
相互轉(zhuǎn)換 | Json轉(zhuǎn)化為js對象: 1,JSON.parse(jsonstring); 2,Jsobj=eval("("+jsonstring+")"); (兼容所有瀏覽器,但不安全,會執(zhí)行json里面的表達式?) | Js對象轉(zhuǎn)換為Json: JSON.stringify(jsobj);(不兼容ie7) |
其他 | 調(diào)用json官網(wǎng)的js,實現(xiàn)parse 和 stringify 在各個瀏覽器的兼容: https://github.com/douglascrockford/JSON-js/blob/master/json2.js |
總而言之你可以理解為JSON是JS下的一種數(shù)據(jù)格式,他從屬于JS,并且在處理JSON數(shù)據(jù)時可直接使用JS內(nèi)置API
新聞熱點
疑難解答