2013-06-12 44 views

回答

2

有兩種回答您的問題:

  • 答案很簡單:沒有,看到各種反例(如DOM對象,函數,只是自己嘗試一下在提示)。
  • 複雜的答案:是的,JSON.stringify可以將任何JavaScript表達式轉換爲任何JSON子表達式。沒有大的限制。

需要注意的是,它默認情況下不能這樣做,並且它不能以任何標準化的方式這樣做。爲不必要的混淆使用JSON作爲輸入

function(key,value) { 
    if (SPECIALLOGIC) { 
     // ... return some special value 
     // like {__SPECIAL__:'datetime', value:'some_custom_encoding'} 
    } else 
     return value; 
} 
+0

不完全正確(關於複雜的答案) - JSON.stringify不會轉換循環數據結構。例如:'var x = {}; var y = {link:x}; x.link = y;'不會被字符串化。 – kamituel

+0

kamituel:謝謝;意識到,可能應該就此發表一個旁註。技術上(努力)我認爲可以將循環引用指定爲特殊記錄(遍歷樹,將所有內容放入散列表),然後在反序列化時重新生成引用。 – ninjagecko

5
JSON.stringify(JSON.stringify) 

這將返回undefined; JSON不支持功能。

JSON.stringify(/JSON.stringify/) 

返回"{}"; JSON.stringify跳過不可枚舉的屬性。

JSON.stringify(JSON) 

這將返回"{}"; JSON.stringify跳過返回不受支持的值的屬性。

JSON.stringify(JSON.JSON = JSON) 

這會引發異常; JSON不支持循環引用。

1

限制包括對包含觸發異常的循環引用的對象進行字符串化。

JSON.stringify(document); 
// TypeError: Converting circular structure to JSON