对JavaScript解析JSON格式数据的理解

JavaScript对象的创建有两种方式,分别为字面量形式和构造函数形式。采用JSON格式描述的数据恰又为JavaScript以字面量形式声明的对象的结构一样(具体的可以搜索JSON的由来),因此,可以很方便的使用JavaScript的语法来处理这种格式的数据。
例:
[javascript] view plain copy
  1. var jsonObj = {a:1,b:2};  (与 var jsonObj = {'a':1,'b':2};一样);  
上述的jsonObj对象就是采用符合JSON规范的一个JavaScript对象,但并不是所有采用字面量形式声明的对象都是符合JSON格式的,下面示例的这个就不符合:
对JavaScript解析JSON格式数据的理解
  为什么说“不是所有采用字面量形式声明的对象都是符合JSON格式的”? 因为JSON是为了数据的高效简便传输而生的,因此,他描述的是进行传输的数据需要遵守的格式,而JavaScript的对象不仅描述数据的属性,而且还需要有能力描述数据的行为,这两者的定位与出现的初衷都是不一样的。
      采用JSON数据结构传输的数据可以很容易的解析为有用的JavaScript对象,ECMAScript5对解析JSON的行为进行了规范,定义了全局对象JSON(此为全局对象的内部对象),JSON对象有两个方法:stringify()和parse()。这两个方法分别用于把JavaScript对象序列化为JSON字符串和把符合JSON规则的字符串解析为原生JavaScript对象。

二、JSON的基本语法:
① 并列的数据之间用逗号( , )分隔
② 映射用冒号( : )表示
③ 映射的集合用大括号( {} )表示
④ 并列数据的集合用方括号( [] )表示
例:
[javascript] view plain copy
  1. a, {'a':1,'b':2}   b,  [{'c':10,'d':20}]  

三、stringify()和parse()的用法示例
1,JSON.parse() 用于将一个包含JSON符号的字符串中解析为 JavaScript对象,如图:
对JavaScript解析JSON格式数据的理解
2,JSON.stringify()用于将一个JavaScript对象转换成字符串,如图:
对JavaScript解析JSON格式数据的理解
3,一个常见错误的分析(Uncaught SyntaxError: Unexpected token  with JSON.parse),如图:
对JavaScript解析JSON格式数据的理解

     示例中尝试对一个JavaScript对象进行解析,出现了语法错误。原因在于,当parse传入的参数不是string类型时,会尝试将参数转换为string类型,如果能够转换成正确的JSON字符串,则会解析成相应的JavaScript对象;此例中,会尝试将参数obj转化为string类型,调用默认的toString()方法(基于原型链继承而来的方法),而此方法默认返回"[object Object]"字符串,这不是一个符合JSON格式的字符串,因此会报如图所示错误。


转载请保留链接,谢谢。 https://blog.****.net/qq_24754061/article/details/65635520