JSON语法以及json与JavaScript对象的转换

 JSON是JavaScript的一个严格的子集,利用了JavaScript中的一些模式来表示结构化数据。理解JSON,最重要的是理解它是一种数据格式,而不是一种编程语言。JSON虽然利用了JavaScript的一些模式,但JSON并不从属于JavaScript,很多编程语言都可以用JSON来传递数据。



 JSON的语法:

    学习JSON的语法,你只需知道以下三种类型的值。

 1.简单值也就是JavaScript中的字符串、数值、布尔值、null。
  ①,JSON不支持JavaScript的undefined。
  ②,json字符串必须用双引号,不能使用单引号。
  在实际应用中,json更多地用来表示更复杂的数据结构,简单值只是构成整个json数据的基本单元。

 2.对象和JavaScript对象很相似,但是也有几个注意点。
  ①,json中对象的属性需加上引号。(这是手工编写json时最容易犯的错)
  ②,json对象没有声明。

  ③,末尾没有分号。

  举个例子:

javascript对象字面量:
 	var JSobject = {
 		name :"wlk",
 		age : 22,
 		school : {
 			name : "muc",
 			locaton : "BeiJing"
 		}
 	};

 	json对象:
 	{                            //没有声明
 		"name" :"wlk",            
 		"age" : 22,              //json对象的属性必须加上引号
 		"school" : {
 			"name" : "muc",
 			"locaton" : "BeiJing"
 		}
 	}                             //末尾没有分号
  上面的json对象中有两个name属性,但由于它们分属于不同的对象,所以没有问题,但是同一个对象中决不能出现同名属性。

 3.数组 JSON的第二种复杂的数据类型就是数组,同样要注意JSON数组没有变量和分号。对象和数组通常是JSON数据格式的最外层形式。
 比如:
 [                                   //以数组为最外层形式
 	{
 		"name":"wlk",
 		"age":22
 	},
 	{
 		"name":"wang",
 		"school":{
 			"name":"MUC",
 			"location":"Beijing"
 		}
 	},
 ]


json文本与js对象的转换:(详解请解读《JavaScript高级程序设计3》第565页)

    ECMAScript5对解析json的行为进行了规范,定义了全局对象JSON。
    全局JSON对象有两个方法:stringify()和parse()
    这两个方法就能完成JavaScript对象与json文本之间的转换。

JavaScript对象序列化为json文本:JSON.stringify()。
该方法可接受三个参数:
第一个参数是需要序列化的JavaScript对象。
第二个参数为可选参数,它是个过滤器,可以是数组或函数。
第三个参数也为可选参数,用于控制结果中的缩进和空白符。传第三个参数时,第二个参数也要传,如果没有过滤条件就传null。
有些对象会定义有toJSON()方法,返回其自身的JSON数据格式。例如原生Date对象。我们当然也可以给自定义对象添加toJSON()方法。

json文本解析为JavaScript对象:JSON.parse()。
该方法可接受两个参数:
第一个是要解析的json文本。
第二个是一个函数。它会对json数据的每个键值对做一些处理。比如日期字符串经常要使用它进行日期的转换。





你可能感兴趣的:(JavaScript,JSON)