JSON对象的方法。

   JOSN 对象

       早期的JSON解析器基本上就是JavaScript的eval()函数。由于JSON是JavaScript语法的子集,因此eval()函数可以解析,解释并返回JavaScript对象和数组。ECMAScript5对解析JSON的行为进行规范,蒂定义了全局对象JSON。使用eval()对json数据结构求值存在风险,因为可以能会执行一些恶意代码。 对于不能原生支持JSON解析的浏览器,使用这个shim的最佳选择。

  JOSN对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON解析到原生JavaScript值。

 var book = {
		title:"Pro Javascript",
		year:2011,
		edition:3
		} //{"title":"Pro Javascript","year":"2011","edition":"3"}
		var jsonText = JSON.Stringify(book);
		//JSON.stringify()把一个JavaScript对象序列化为一个JSON字符串,然后将他保存在变量jsonText
  var bookCopy = JSON.parse(jsonText);
        //将JSON字符串直接传递给JSON.parse()就可以得到相应的JavaScript值。
        //虽然book和bookcopy具有相同的属性,但他们是两个独立的没有任何关系的对象。如果传给json.parse()
        //不是有效的JSON,该方法会抛出错误。

    toJSON( )方法

       有的时候,JSON.stringify()还是不能满足对某些对象进行自定义序列化的需求。在这些情况下。可以给对象定义toJSON()方法,返回其自身的json数据格式。原生Date对象有一个toJSON()方法,能够将JavaScript的date对象自动转换成ISO8601日期字符串(与Date对象调用toISOString()的结果是一样的)。可以给任何对象添加toJSON( )方法。

       toJSON()可以作为函数过滤器的补充,因此理解序列化的内部顺序十分重要。假设把一个对象传入JSON.stringify().序列化该对象的的顺序如下:

 1,如果存在toJSON()方法而且能够通过它取的有效的值,则调用该方法。否则,返回对象本身。

 2,如果提供第二个参数,应用这个函数的过滤器。传入函数过滤器的值是第(1)步返回的值。

 3,对第二步返回的每个值进行相应的序列化。

 4,如果提供了第三个参数,执行相应的格式化。

无论是考虑定义toJSON()方法,还是考虑使用函数过滤器,亦或需要同时使用两者,理解这个顺序都是至关重要的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值