JSON與JS對象的區(qū)別與對比
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ī)則很簡單: 對象是一個無序的“名稱/值”對集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“名稱/值”對之間使用“,”(逗號)分隔。
它是一種嚴格的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
相關文章
JSON stringify及parse方法實現(xiàn)數(shù)據(jù)深拷貝
這篇文章主要為大家介紹了JSON.stringify遞歸及JSON.parse有限狀態(tài)自動機實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
JavaScript面試數(shù)組index和對象key問題詳解
這篇文章主要為大家介紹了JavaScript面試數(shù)組index和對象key問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
axios?攔截器管理類鏈式調(diào)用手寫實現(xiàn)及原理剖析
這篇文章主要為大家介紹了axios?攔截器管理類鏈式調(diào)用手寫實現(xiàn)及原理剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08
JavaScript 中有了Object 為什么還需要 Map 呢
Map 是用于存儲鍵值的,而 JavaScript 中對象也是由鍵值對組成的,那么 Map 存在的意義是什么呢?下面文章小編就來向大家詳細介紹吧,需要的朋友可以參考下2021-09-09

