JSON
- JSON(JavaScript Object Notation)是一種基于文本的數(shù)據(jù)交換格式。
- 幾乎所有的編程語言都可以使用json來進(jìn)行數(shù)據(jù)交互和處理
- 而另一方面隨著REST吧趣、像MongoDB這樣的NoSQL技術(shù)或標(biāo)準(zhǔn)的廣泛使用仁热,JSON也正成為一種被推薦的數(shù)據(jù)交互格式。
- json語法可以表示以下三種類型的值:簡單值(key/value)渠缕,對象(Object)鸽素,數(shù)值(array)。
基本語法
-
簡單值
又叫鍵值對
-
對象
一個JSON對象是包含了一組未排序鍵值對的集合亦鳞。下面例子中的address就是一個JSON對象:
{
“address” : {
“l(fā)ine1” : “555 Main Street”,
“city” : “Denver”,
“stateOrProvince” : “CO”,
“zipOrPostalCode” : “80202”,
“country” : “USA”
}
}
-
數(shù)組
JSON中[]來包含數(shù)組元素馍忽,參考下面的例子:
{
“people” : [
{ “firstName”: “John”, “l(fā)astName”: “Smith”, “age”: 35 },
{ “firstName”: “Jane”, “l(fā)astName”: “Smith”, “age”: 32 }
]
}
解析和序列化
-
JSON對象
JSON對象是一個JavaScript用來對json數(shù)據(jù)進(jìn)行解釋和序列號的對象棒坏,支持這個對象瀏覽器有:IE8+,F(xiàn)irefox3.5+遭笋,Safari4+坝冕,Chrome。此對象有兩個方法:stringify()瓦呼,parse()喂窟。
-
序列化
JavaScript中要對json數(shù)據(jù)進(jìn)行序列號,使用的是JSON.stringify()央串。這個方法可以接受三個參數(shù):
1.要序列化的JavaScript對象(必須)磨澡;
2.過濾器,這個參數(shù)可以是一個數(shù)組质和,也可以是個函數(shù)(可選)稳摄;
3.最后一個參數(shù)是一個選項,標(biāo)書JSON 字符串中要不要保留縮進(jìn)(可選),int,表示縮進(jìn)的空格數(shù)饲宿,厦酬。
var book = {
"title":"xxxx",
"authors":["aaa"],
edition: 3,
year:2001
};
var jsonText1 = JSON.stringify(book); //序列化整個對象
var jsonText2 = JSON.stringify(book,["title","edition"]); //序列對象中與數(shù)組中對應(yīng)的對象。
var jsonText3 = JSON.stringify(book,function(key,value){ //根據(jù)switch語句輸出對象的序列化對象
switch(key){
case:"authors";
return value.jion(",")
case:"year"
return 5000
}
}
var jsonText4 = JSON.stringify(book,null,1);
//jsonText1
{"title":"xxxx","authors":["aaa"],"edition": 3,"year":2001}
//jsonText4
{
"title":"xxxx",
"authors":["aaa"],
"edition": 3,
"year":2001
}
-
解析
JavaScript中要對json數(shù)據(jù)進(jìn)行序列號褒傅,使用的是JSON.stringify()弃锐。這個方法可以接受兩個參數(shù):
1.要解析的JavaScript字符串(必須);
2.還原函數(shù)殿托,這個參數(shù)可以是一個數(shù)組霹菊,也可以是個函數(shù)(可選);
var book = {
"title":"xxxx",
"authors":["aaa"],
edition: 3,
year:2001,
releaseDate: new Date(2011,11,1)
};
var jsonText1 = JSON.stringify(book); //序列化整個對象
var book1 = JSON.parse(jsonText1,function(key,value){
if(key=="releaseDate"){
return new Date(value); //將原本的字符串還原成Date對象
}else{
return value
}
}