序列化:stringify()
將JavaScript對象序列號爲JSON字符串
反序列化:parse()
將JSON字符串解析爲原生JavaScript值json
序列化選項:
JSON.stringify()除了能夠序列化JavaScript對象外,還能夠接收另外兩個參數,這兩個參數用於指定以不一樣的方式序列化JavaScript對象,第一個參數是過濾器,第二個參數是選項,表示是否在 json字符串中保留縮進數組
例如:
一個數組:函數
1 var user= { 2 title: '解憂雜貨店', 3 author: '東野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText =JSON.stringify(user); 8 console.log(jsonText); 9 var jsonText0 =JSON.stringify(user,["title","author"]); 10 console.log(jsonText0);
控制檯返回的數據以下:this
一個函數:spa
1 var user= { 2 title: '解憂雜貨店', 3 author: '東野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText =JSON.stringify(user,function(key,value){ 8 switch(key){ 9 case "title": 10 return 'xxxx'; 11 case "author": 12 return undefined; 13 default: 14 return value; 15 } 16 }); 17 console.log(jsonText)
控制檯返回的數據以下:
code
JSON.stringify()方法的第三個參數用於控制結果中的縮進和空白符對象
例如:blog
1 var user= { 2 title: '解憂雜貨店', 3 author: '東野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText0 =JSON.stringify(user); 8 console.log(jsonText0) 9 var jsonText =JSON.stringify(user,null,4); 10 console.log(jsonText)
控制檯返回的結果:ip
由上面能夠看出縮進與不縮進的結果,相對來講縮進的可讀性強;
注意:縮進的值範圍在10 之內大於10的都講自動裝換爲10
若是將上面的第三個參數的數字換成符號也能夠例如換成 「--」
效果以下:字符串
注意:這裏的縮進字符串最長不能超過10個字符,若是超過10個字符,結果中只出現前10個字符
做爲JSON.stringify中第二個參數(函數過濾器)補充
方法: date.toJSON()
返回任何序列化的值
例如:
1 var user= { 2 title: '解憂雜貨店', 3 author: '東野圭吾', 4 edition: 10, 5 date: '2012-03', 6 toJSON: function(){ 7 //只返回author 8 return this.author; 9 } 10 }; 11 var jsonText0 =JSON.stringify(user); 12 console.log(jsonText0)
控制檯返回的結果:
toJSON()做爲JSON.stringify中第二個參數(函數過濾器)補充,理解內部順序很重要。
假設把一個對象傳入JSON.stringify() 序列化對象的順序以下:
(1)若是存在toJSON()方法並且能經過它取得有效的值,則調用該方法。不然,按默認順序執行序列化
(2)若是提供了第二個參數,應用這個函數過濾器,傳入的函數過濾器的值是第(1)步返回的值。
(3)對第(2)步 返回的每一個值進行相應的序列化。
(4)若是提供了第三個參數,執行相應的格式化操做。
解析選項:
JSON.parse()方法也能夠接收另外一個參數,改參數是一個函數,講在買個鍵值對上調用,爲區別JSON.stringify()方法接收的過濾器(有多是函數的函數(replace)),在這裏的函數叫還原函數(reviver)。接收兩個參數,一個鍵和一個值,而且須要返回一個值。
例如:
1 var user= { 2 title: '解憂雜貨店', 3 author: '東野圭吾', 4 edition: 10, 5 date: '2012-03', 6 releaseDate: new Date(2017,11,28) 7 }; 8 9 var jsonText1 =JSON.parse(jsonText0,function(key,value){ 10 if(key == "releaseDate"){ 11 return new Date(value) 12 }else{ 13 return value 14 } 15 }); 16 console.log(jsonText1.releaseDate)
控制檯返回的結果:
簡單來講就這樣咱們就解析後的內容中獲取須要的年月日等內容。