JSON简介

1、JSON是一种数据格式,不支持变量、函数和对象实例,可以表示以下三种类型的值:

简单值:使用与Javascript相同的语法,可以在JSON中表示字符串、数值、布尔值、和null,不支持undefine。

对    象:表示一组无序的键值对,每个键值对中的值可以是简单值,也可以是复杂数据类型的值。

数    组:表示一组有序的键值列表,可以通过数值索引来访问其中的值,数组的值也可以是任意类型——简单值、对象和数组。

2、简单值:

eg:5

这是JSON表示数值5的方式,类似地,字符串表示:"Hello world!"。Javascript字符串与JSON字符串最大的区别在于,JSON字符串必须使用双引号(单引号会导致语法错误),布尔值和null也是有效的JSON的形式。

3、对象:

JSON中的对象与Javascript有点不同。javascript中如下:

var  person = {

name:  "Nicholas",

age:  29

};

实际上,javascript中完全可以这样写:

var  person = {

"name":  "Nicholas",

"age":  29

};

JSON表示上述对象方式如下:

{

"name":  "Nicholas",

"age":  29

} //与javascript相比,末尾没有分号,没有声明变量(JSON中没有变量的概念)。并且JSON中对象的属性名任何时候都必须加双引号

也可以在对象中嵌入对象:

{

"name":  "Nicholas",

"age":  29,

"school": {

"name": "collegeName",

"location": "locationName"

}

}

虽有有两个name,但同属于不同的对象,因此这样没问题。不过同一对象中绝对不应该出现两个同名属性。

4、数组:

Javascript中数组字面量如下:

var value = [25, "hi", true];

在JSON中同样的语法如下:[25, "hi", true],结尾也没有分号。

5、解析与序列化:

早期的JSON解析器基本上使用Javascript的eval()函数,可以解析、解释并返回Javascript对象和数组。ECMAscript5对解析JSON行为进行了规

范,定义了全局对象JSON。在旧版本浏览器中,使用eval()对JSON数据结构求值存在风险,因为可能会执行一些恶意代码。

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

析为原生的javascript值。有时候JSON.stringify()不能满足对某些对象进行自定义序列化的需求,在这种情况下可以给对象定义toJSON()方法,

返回其自身的JSON格式。


参考自《JavaScript高级程序设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值