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?
};?
1
2
3
4
5
6
7
8
9
10
11
二者相同的地方是,看起來都是數據,而且恰巧又都是文本;不同的地方在於,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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20