欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSON语法以及json与JavaScript对象的转换实例讲解

程序员文章站 2022-05-18 17:22:03
json是javascript的一个严格的子集,利用了javascript中的一些模式来表示结构化数据。理解json,最重要的是理解它是一种数据格式,而不是一种语言。json虽然利用了javascr...

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数据的每个键值对做一些处理。比如日期字符串经常要使用它进行日期的转换。