2013-06-12 30 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