JSON與JS物件的區別
和一些同學一樣:總是感覺json物件(其實json不是物件)和js物件的字面量表示法相同,最近學習json,真心搞不懂,js物件和json有什麼區別?就是感覺json的key要用” “括起來,但是js物件的字面量表示法不需要。
比如:
//js物件的字面量表示法: var people1={ name:'hehe', age:18 }; //json的格式是: var people1={ "name":'hehe', "age":18 };
二者相同的地方是,看起來都是資料,而且恰巧又都是文字;不同的地方在於,JS字面量的文字是被指令碼引擎直接解析的,而JSON的文字,如果要轉化為JS物件的話,是交給eval函式來處理的,那麼,如何理解JSON的文字,就取決於這個函式,而不是指令碼引擎,因為這2者的處理根本就不在一個層面上。
一直以為JSON是物件,然而在閱讀js高程中出現了一些不理解的地方,網上查閱才發現JSON與JS有很大的不同。
var obj={width:100,height:200},這樣的並不叫JSON,並且JSON只是一種資料格式,並不是具體的例項物件。但很多人把這樣的JS物件當成JSON。
JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,JSON格式的資料,主要是為了跨平臺交流資料用的。
但JSON和JavaScript確實存在淵源,可以說這種資料格式是從JavaScript物件中演變出來的,它是JavaScript的一個子集。JSON本身的意思就是JavaScript物件表示法(JavaScript Object Notation),它用嚴格的JavaScript物件表示法來表示結構化的資料。
它是一種嚴格的js物件的格式,JSON的屬性名必須有雙引號,如果值是字串,也必須是雙引號;
JSON只是一種資料格式(或者叫資料形式),資料格式其實就是一種規範,格式、形式、規範是不能用來存諸資料的。我們不能把以下的物件叫JSON,比如:
<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格式的陣列,是JSON的稍複雜一點的形式 */ var str2='['+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ '{"width":100,"height":200,"name":"rose"},'+ ']' ; /* 這個叫稍複雜一點的JSON格式的字串 */ </script>
原文:https://blog.csdn.net/yeoman92/article/details/54924930