#####基本格式要求
每个JSON对象,就是一个值,每个JSON文档职能包含一个值
- 复合类型的值只能是数组或着对象。不能是函数,正则对象或者日期对象
- 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用
NaN
,Infinity
,-Infinity
和undefined
)
- 字符串必须使用双引号,不能使用单引号
- 对象的键名也必须带有双引号
- 数组或着对象的最后一个成员,不能加逗号。
#####JSON.stringify()
JSON.stringify
方法用于将一个值转为字符串。该字符串符合 JSON 格式,并且可以被JSON.parse
方法还原。
|
|
JSON.stringify()还可以接受第二个参数(第二个参数是一个数组[],否则无效)指定需要转成字符串的属性。(只对对象有效,对数组无效)
|
|
转换规则:
如果对象中含有不合规定的值,如undefined 或着函数对象等,会忽略
123456789101112var obj = {a:1,b:2}JSON.stringify(obj)"{"a":1,"b":2}" //会自动在键名上添加括号---------var obj = {a: undefined,b: function () {}}JSON.stringify(obj) // "{}"如果是数组中包含有不合规定的值,那么会转为null
12var arr = [undefined, function () {}]JSON.stringify(arr) // "[null,null]"JSON.stringify()会忽略对象的不可遍历属性
123456789101112131415var obj={}Object.defineProperties(obj,{'foo':{value:1,enumerable:true enumerable是可枚举属性的开关},'bar':{value:2,enumerable:false}})JSON.stringify(obj) //{"foo":1}obj.propertyIsEnumerable('foo') //trueobj.propertyIsEnumerable('bar') //false###关于obj.propertyIsEnumerable(prop)返回一个布尔值,来检测这个属性是否可枚举