JSON

JSON解析与序列化

字号+ 作者:H5之家 来源:H5之家 2015-11-04 09:08 我要评论( )

JSON之所以流行,拥有与JavaScript类似的语法并不是全部原因。更重要的一个原因是,可以把JSON数据结构解析为有用的 JavaScript对象。与XML数据结构要解析成DOM

JSON之所以流行,拥有与JavaScript类似的语法并不是全部原因。更重要的一个原因是,可以把JSON数据结构解析为有用的 JavaScript对象。与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON可以解析为JavaScript对象的优势极其明 显。

JSON对象

早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的子集,因此eval()函 数可以解析、解释并返回JavaScript对象和数组。ECMAScript 5对解析Json的行为进行规范,定义了全局对象JSON。支持这个对象的浏览器有IE8+、Firefox 3.5+、Safari4+、Chrome和Opera10.5+。对于较早版本的浏览器可以使用一个shim:https://github.com /douglascrockford/JSON-js。在旧版本的浏览器中,使用eval()对JSON数据结构求值存在风险,因为可能会执行一些恶意代 码。对于不能原生支持JSON解析的浏览器,使用这个shim是最佳的选择。

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

var book = {    title: "Professional JavaScript",    authors: ["NIcholas C. Zakas"],    edition: 3,    year: 2011};var jsonText = JSON.stringify(book);

这个例子使用JSON.stringify()把一个JavaScript对象序列化为一个JSON字符串,然后将它保存在变量jsonText 中。默认情况下,JSON.stringify()输出的JSON字符串不包含任何空格字符或缩进,因此保存在jsonText中的字符串如下所示:

{"title":"Professional JavaScript","authors":["NIcholas C. Zakas"],"edition":3,"year":2011}

在序列化JavaScript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此时,值为undefined的任何属性也都会被跳过。结果中最终都是值为有效JSON数据类型的实例属性。

将JSON字符串直接传递给JSON.parse()就可以得到相应的JavaScript值。例如,使用下列代码就可以创建与book类似的对象:

var bookCopy = JSON.parse(jsonText);

注意,虽然book与bookCopy具有相同的属性,但它们是两个对立的、没有任何关系的对象。
如果传给JSON.parse()的字符串不是有效的JSON,该方法会抛出错误。

JSON序列化选项

实际上,JSON.stringify()除了要序列化的JavaScript对象外,还可以接收另外两个参数,这两个参数用于指定以下不同的方式序列化JavaScript对象。第一个参数是个过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化。

1.过滤结果

如果过滤器参数是数组,那么JSON.stringify()结果中将只包含数组中列出的属性。来看下面的例子。

var book = {    "title": "Professional JavaScript",    "authors":

 

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

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评
s