** 本文章著作權(quán)歸沒夢想的咸魚丶所有北苟,轉(zhuǎn)載須說明來源**
1.首先明確JSON是什么?
- json是一種數(shù)據(jù)交換格式打瘪,是純文本的字符串友鼻,是作為一種替代XML數(shù)據(jù)格式角色出現(xiàn),json簡單易讀方便轉(zhuǎn)換跨平臺,有很多json api提供了json字符串與對象互轉(zhuǎn)的方法,如下面JavaScript中json字符串互轉(zhuǎn)的方法秒赤。
JSON.stringify()//將對象轉(zhuǎn)化為json字符串
JSON.parse()//將json字符串轉(zhuǎn)化了對象
2.JSON和JavaScript的關(guān)系是怎樣的呢 娇跟?
- json開始是JavaScript語法中的一個子集,后來人們覺得這種形式的用來作為數(shù)據(jù)交換格式不錯虫碉,就單獨將它拿了出來,這也是造成大家對JSON胸梆,JSON字面量敦捧,JSON對象之間混淆不清的緣由了。
3.JSON字面量又是什么呢
- 一般的我們創(chuàng)建一個對象的方法
var obj1=new Object();
var obj2={}//字面量
- 上面的第二種就是JavaScript對象字面量的寫法碰镜。那那json字面量是什么呢兢卵,那我們在看看下面的一段代碼
var person={
"name":"xianyu",
"age":24,
"love":"Online Game"
}
從上我們可以看出這就是用字面量表示一個對象,而這個格式就是json格式的绪颖, 因為本身json就是JavaScript語法集的一種秽荤,所以json字面量就是用json格式的JavaScript對象字面量。
json放到JavaScript中執(zhí)行是合法代碼,是JavaScript對象字面量窃款,但是JavaScript對象字面量不一定是json
var person={
"name":"xianyu",
"age":24,
"love":"Online Game"
}
//和
var person={
name:'xianyu',
age:24,
love:'Online Game',
skill:function(){
alert('basketball')
}
}
- json必須是符合以下
- 1.鍵一定要用雙引號课兄,值如果是字符串也要用雙引號包括
- 2.數(shù)據(jù)只包括,數(shù)字晨继,布爾第喳,數(shù)組,null踱稍,對象曲饱,字符串
- 而JavaScript對象字面量屬性不用引號也可以,而且值可以是任何類型珠月,函數(shù)扩淀,undefined或者是正則都是可以的 。json只是JavaScript語法集中的一種啤挎,還有很多其他部分的東西都是不符合json的規(guī)范驻谆。
4.那JSON對象什么呢
- JSON對象就是JavaScript中的一個對象,里面有一些屬性和方法供我們使用,如下面2個方法
JSON.stringify()//將對象轉(zhuǎn)化為json字符串
JSON.parse()//將json字符串轉(zhuǎn)化了對象
//利用這2個方法也用可以做一個對象深拷貝
- 額外擴(kuò)展深拷貝
var obj={name:'xianyu',age:24}
var str=JSON.stringify(obj)//得到j(luò)son字符串
str=JSON.parse(str)//得到Object {name: "xianyu", age: 24}
str==obj//得到false
var obj1 = obj //直接賦值得到的只是一個指針庆聘,兩者指向東西都是一樣的
obj1==obj//得到true