這一節我們主要討論json的解析。 JSON.parse()方法也可以接收另一個參數,該參數是一個函數,將早每個鍵值對上呼叫。為了區別JSON.stringify()接收的替換(過濾)函數(replacer),這個函數被稱為還原函數(reviver),但實際上這兩個函數的簽名是相同的-它們都接收連個參數,一個鍵和一個值,而且都需要回傳一個值。 如果還原函數傳回undefined,則表示要從結果中刪除對應的鍵;如果傳回其他值,則將該值插入到結果中。如: 複製代碼 代碼如下: <BR>function init() <BR>{ <BR>var student={ <BR>name:"Bill", <BR>birthDate:new Date(1990,8,4) <BR>}; <BR>var jsonText=JSON.stringify(student); <BR>var studentObject=JSON.parse(jsonText,function(key,value){ <BR>if(key=="birthDate") <BR>{ <BR>return new Date(value); <BR>} <BR>else <BR>{ <BR>return value; <BR>} <BR>{ <BR>return value; <BR>} <BR>} <BR>}); <BR>} <BR> 以上程式碼先是為student加入了出生日期birthDate屬性,該屬性保存著Date物件。這個物件在經過序列化之後變成了有效地JSON字串,然後經過解析又在studentObject中還原為一個Date物件。