什么是JSON安全对象?

时间:2017-09-26 01:14:08

标签: javascript json

在凯尔辛普森的书You Don't Know JS: this & Object Prototypes中,他写了关于如何复制对象的主题:

  

一个子集解决方案是JSON安全的对象(即,可以序列化为JSON字符串然后重新解析为具有相同结构和值的对象)可以轻松地重复用:

var newObj = JSON.parse( JSON.stringify( someObj ) );
     

当然,这需要您确保您的对象是JSON安全的。在某些情况下,这是微不足道的。对于其他人来说,这还不够。

什么是“JSON安全”对象?我使用JavaScript运行了一些测试,到目前为止大多数事情(数组,数字,字符串,对象)可以使用上面的行复制,但方法(foo.bar)除外,当尝试复制方法时,{{1 }}被插入到重复对象中的方法位置。

1 个答案:

答案 0 :(得分:2)

获取foo< => JSON.parse(JSON.stringify(foo))同样如此,我们必须能够在JSON format中代表foo

JSON仅支持:

  

数字:带符号的十进制数,可能包含小数部分,可能使用指数E表示法,但不能包含像NaN这样的非数字。格式不区分整数和浮点。 JavaScript对其所有数值使用双精度浮点格式,但实现JSON的其他语言可能会对数字进行不同的编码。


  

String:零个或多个Unicode字符的序列。字符串用双引号分隔,并支持反斜杠转义语法。


  

布尔值:值为true或false


  

数组:零个或多个值的有序列表,每个值可以是任何类型。数组使用方括号表示法,元素以逗号分隔。


  

对象:名称/值对的无序集合,其中名称(也称为键)是字符串。由于对象旨在表示关联数组,[12]建议(尽管不是必需的)[13]每个键在对象中是唯一的。对象用大括号分隔,并使用逗号分隔每对,而在每对内,冒号':'字符将键或名称与其值分开。


  

null:空值,使用单词null


在javascript中,JSON safe object的概念基本上是指一个javascript对象,它可以用JSON格式表示而不会有任何损失。