1. 程式人生 > >序列化物件(javaScript Object Notation)

序列化物件(javaScript Object Notation)

物件序列化(serialization): 將物件的狀態轉化為字串. 也可以將字串還原為物件. es5 , 提供了內建函式JSON.stringify() , 和JSON.parse() ,用來序列化和還原JavaScript物件. JSON的全稱是"JavaScript Object Notation" —JavaScript物件表示法.

var user = {name:"博主" , pwd:"123456"};
var s= JSON.stringify(user);
p = JSON.parse(s) ;  //p是s的深度clone

JSON 的語法是javaScript的子集, 不能表示JavaScript裡的所有值

. 支援物件,陣列,字串,無窮大數字,true,false和null , 並且它們可以序列化和還原. NaN , Infinity, -Infinity序列化的結果是null, 日期物件序列化的結果是ISO格式的日期字串, JSON.parse(Date物件) 為字串; 函式 , RegExp , Error物件和undefined值不能序列化 ,在序列化的輸出字串會將這個屬性省略掉. JSON.stringify()和JSON.parse() 都可以接受第二個可選引數,通過傳入需要序列化或還原的屬性列表來定製 自定義的序列化或還原操作. 一個栗子:

  var  person ={name:"黃科堅" , sex:"男" , love: function(){alert("love程式設計")},  date: new Date(),undefined:undefined ,              };
 
  var s =JSON.stringify(person); //將物件序列化
console.log(typeof s)  //'string'
  var decodeperson=JSON.parse(s); //將JSON 還原成物件
 console.log(decodeperson.love) //undefined;
 console.log(typeof decodeperson.date); //'string';
 console.log(decodeperson.hasOwnProperty("undefined")); //false