JS基础5

2018-10-29  本文已影响0人  pp_5793

JSON

JSON格式

它是一种用于数据交换的文本格式,用来取代之前的XML。
JOSN对象:
它有两个静态对象

JSON.stringify()方法

是用来把一个值转换为JSON字符串。该字符串符合JSON格式,并且可被JSON.parse()方法还原。
注意转成JSON格式时有下面常犯的错误:

console.log(JSON.stringify('fool')==="\"fool\"");
console.log(JSON.stringify('fool'));
输出为:true
   
"fool"

从以上代码中,我们要注意当转换单引号的值时,它会转换成双引号,但是在Javascript中不能直接识别两个双引号,它会有歧义产生,会产生编译错误,所以在第一行代码中要写成"\"fool\""的形式,才会显示true

它还可以有两个参数,第二个参数可以是个函数,其中如果是一个数组,它可以指定需要传换成JSON格式的属性:

var obj={
    'p1':'value',
    'p2':'value1'
}
var selectesProperty=['p2'];
console.log(JSON.stringify(obj,selectesProperty));

输出为:

{"p2":"value1"}
[Finished in 0.3s]

注意这里面返回的是名为p2的属性的整个内容,包括它的值,还有它只对对象的属性有效,对数组是无效的。
下面是第二个参数为函数时的例子:

function f(key,value){
if(typeof value==='number'){
    value=2*value;
}
return value;
}
console.log(JSON.stringify({'a':1,'b':2},f));

返回

{"a":2,"b":4}
[Finished in 0.3s]

这里返回的是传入对象的值,而且改变了其中的值,就是用了函数f。
这个方法还可以传入第三个参数,是为了加强转换的JSON格式的可读性,
比如第三个参数如果是数字,则表示在该JSON格式下前面会出现几个空格该数字是2,则前面就出现两个空格 但是最这个数有限制,最高是10,
写法:JSON.stringify('a',null,2)该格式的话虽然不报错但是参数3没有用到,如果第一个参数是一个对象的话才有用 比如JSON.stringify({'a':1},null,2)
如果是字符串,则还会加在该对象的属性名前面,注意写法,不要忘记加单引号:JSON.stringify({ p1:1, p2:2 }, null, '|-')

toJSON()方法

如果对象中有toJSON()方法的话,那么当JSON.stringify想转换该对象为JSON格式时 ,会使用toJSON方法的返回值作为参数,而忽略掉其他方法。

var user = {
  firstName: '三',
  lastName: '张',

  get fullName(){
    return this.lastName + this.firstName;
  },

  toJSON: function () {
    return {
      name: this.lastName + this.firstName
    };
  }
};

console.log(JSON.stringify(user));
// "{"name":"张三"}

除此之外,该方法还可以用来转换前面转换不了的正则表达式。具体见文档。

JSON.parse()方法

它可以用来把JSON格式转换为原来的值,它也可以有第二个参数,也就是可以用函数来限制其返回值。
注意传入该方法的参数必须是 正确的JSON格式。

上一篇 下一篇

猜你喜欢

热点阅读