JSON.stringify可以将ANY javascript变量转换为文本吗? 还是有限制(功能,原型等)?所有的JavaScript变量JSON序列化?
2
A
回答
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;
}
5
JSON.stringify(JSON.stringify)
这将返回undefined; JSON不支持功能。
JSON.stringify(/JSON.stringify/)
返回"{}"
; JSON.stringify跳过不可枚举的属性。
JSON.stringify(JSON)
这将返回"{}"
; JSON.stringify跳过返回不受支持的值的属性。
JSON.stringify(JSON.JSON = JSON)
这会引发异常; JSON不支持循环引用。
2
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
如果未定义,函数,或一个XML值转换期间遇到它要么省略(当它在一个对象被发现)或截尾为null(当它在阵列中被发现)。
1
限制包括对包含触发异常的循环引用的对象进行字符串化。
JSON.stringify(document);
// TypeError: Converting circular structure to JSON
相关问题
- 1. Json序列化变量PropertyName
- 2. DataContractSerializer不反序列化所有变量
- 3. 序列化的Json与变量名
- 4. 反序列化具有无效变量名称的嵌套json
- 5. 反序列化Json的时候进入的变化量
- 6. 反序列化JSON改变
- 7. JSON阵列结构的变化所
- 8. javascript不处理所有返回的json变量
- 9. spring webflow变量序列化
- 10. 反序列化cookie变量
- 11. 用于JSON的Javascript表单序列化
- 12. 的Json反序列化元组命名的变量
- 13. 列中所有行的可变变量
- 14. Javascript JSON变量父
- 15. json from javascript变量
- 16. C#Json序列化:作为数组的多个变量
- 17. Json序列化接受布尔变量的数值输入
- 18. 杰克逊反序列化的变量作为JSON字符串
- 19. 试图反序列化嵌套的JSON变量
- 20. C#Json反序列化 - 作为变量的属性
- 21. 反序列化嵌套的JSON数据并分配到变量
- 22. 将具有变量名/值对的JSON反序列化为C中的对象#
- 23. 序列化所有领域
- 24. 的Json序列化
- 25. JSON序列化
- 26. 的Javascript添加所有值变量
- 27. 序列化/反序列化用户定义的类变量?
- 28. Javascript JSON日期反序列化
- 29. ASP.NET WebApi DateTimeOffset序列化到Json/JavaScript(angular2)
- 30. 反序列化JSON JavaScript对象
不完全正确(关于复杂的答案) - JSON.stringify不会转换循环数据结构。例如:'var x = {}; var y = {link:x}; x.link = y;'不会被字符串化。 – kamituel
kamituel:谢谢;意识到,可能应该就此发表一个旁注。技术上(努力)我认为可以将循环引用指定为特殊记录(遍历树,将所有内容放入散列表),然后在反序列化时重新生成引用。 – ninjagecko