JSON

js学习笔记:JSON(2)

字号+ 作者:H5之家 来源:H5之家 2018-01-19 13:00 我要评论( )

[code]{"title": "aaa","authors": ["aa","bb"],"edition": 3,"year": 2011}可以注意到,这个方法也在结果字符串中插入了换行符以提高可读性。只要传入有效的控制缩进的参数值,结果字符串就会包含换行符。 最大缩

[code]{ "title": "aaa", "authors": [ "aa", "bb" ], "edition": 3, "year": 2011 }可以注意到,这个方法也在结果字符串中插入了换行符以提高可读性。只要传入有效的控制缩进的参数值,结果字符串就会包含换行符。

最大缩进空格数为10,所有大于10的值都会自动转换为10.

如果缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符。在使用字符串的情况下,可以将缩进字符设置为制表符,或者两个短划线之类的任意字符。

[code]var jsonText = JSON.stringify(book,null,"--");[code]{ --"title": "aaa", --"authors": [ ----"aa", ----"bb" --], --"edition": 3, --"year": 2011 }

缩进字符串最长不能超过10个字符长。如果字符串长度超过了10个,结果中将只出现前10个字符。

toJSON()方法有时候,JSON.stringify()方法还不能满足对某些对象进行自定义序列化的需求。这种情况下,可以给对象定义toJSON()方法,返回其自身的JSON数据格式。可以为任何对象添加toJSON()方法。

[code]var book = { "title":"aaa", "authors":[ "aa", "bb" ], "edition":3, "year":2011, toJSON:function(){ return this.title; } }; var jsonText = JSON.stringify(book); //"aaa"以上代码在book对象上定义了一个toJSON方法,该方法返回title的值。

可以让toJSON()方法返回任何值,他都能正常工作。

比如,在这个方法上返回undefined,此时如果包含它的对象嵌入在另一个对象中,会导致它的值变为null;而如果它是顶级对象,结果就是undefined。

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

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

如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是上一步的结果。

对上一步返回的每个值进行相应的序列化。

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

解析选项JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对上调用。 为了区别JSON.stringify()接收的过滤函数,这个函数被称为还原函数,但实际上这两个函数的签名是相同的,它们都接收两个参数,一个键和一个值,而且都要返回一个值。

如果还原函数返回undefined,则表示要从结果中删除相应的键;

如果返回其他值,则将该值插入到结果中。

[code]var book = { "title":"aaa", "authors":[ "aa", "bb" ], "edition":3, "year":2011, "releaseDate":new Date(2011,11,1) }; var jsonText = JSON.stringify(book); var bookCopy = JSON.parse(jsonText,function(key,value){ if(key == "releaseDate"){ return new Date(value); }else{ return value; } }); alert(bookCopy.releaseDate.getFullYear());以上代码先是为book增加了一个releaseDate属性,该属性保存着一个Date对象。这个对象在序列化之后变成了有效的字符串,然后经过解析又在bookCopy中还原为一个Date对象。(还原函数在遇到“releaseDate”键时,会基于相应的值创建一个新的Date对象。)

js

猜你在找

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • js解析json数组

    js解析json数组

    2018-01-19 13:07

  • json学习之二:JSONObject对象使用

    json学习之二:JSONObject对象使用

    2018-01-18 18:05

  • Jackson学习一之对象与JSON互相转化

    Jackson学习一之对象与JSON互相转化

    2018-01-18 18:03

  • server学习四(对json数据的处理) dayney

    server学习四(对json数据的处理) dayney

    2018-01-18 10:05

网友点评