数据交换格式(XML与JSON)、JSON与JavaScript对象之间互转

一、什么是数据交换格式

数据交换格式是指服务器客户端之间进行数据传输与交换的格式

在前端,经常提到的数据交换格式是JSON和XML。XML用的非常少,JSON是主流的数据交换格式

二、XML数据交换格式

XML全称:EXtensible Markup Language,中文叫可扩展标记语言

1、XML特点

XML与HTML类似,也是一种标记语言。

<note>
	<to>ls</to>  // 发给谁
	<from>zs</from>  // 谁发的
	<heading>通知</heading>  // 标签
	<body>晚上开会</body>  // 内容
</note>

2、XML与HTML的区别

虽然都是标记语言,但是两者没有任何关系
HTML是用来描述网页的内容,是网页的载体
XML是用来传输和存储数据,是数据的载体

3、XML缺点

① 格式臃肿,和数据无关的代码多,体积大,传输效率低
② 在JS中解析XML比较麻烦

三、JSON数据交换格式

JSON全称JavaScript Object Notation,即“JavaScript对象表示法”,
简单来说:JSON就是用字符串来表示javascript对象数据或数组数据,它使用文本表示一个JS对象或数据信息。

1、理解

JSON是一种轻量级的数据交互格式,专门用来传输和存储数据
JSON本质是字符串

2、JSON的两种结构

JSON包含对象和数组两种结构,通过这两种结构互相嵌套,可以表示各种复杂的数据结构。

① 对象结构

{}括起来的内容,数据表示为{key:value,key:value,…}的键值对结构。

key必须是使用英文的双引号包裹的字符串,value的数据类型可以是数字、字符串、布尔值、null、数组、对象6中类型

JSON中所有的字符串都必须用双引号来包裹

{
    "name":"憨瓜",
    "age":3,
    "sex":'公猫已绝育',
    "adress":null,
    "hobby":["气人","咬人","挠人"]
}

③ 数组结构

[]括起来的内容。数据表示为[“咬人”,“挠人”,3,false…]的数组结构。

数据的类型可以是:数字、字符串、布尔值、null、数组、对象6种类型。

["气人","咬人","挠人"],
[100,200,300],
[true,false,null],
[{"name":"憨瓜","age":3,"sex":'公猫已绝育'},{"name":"波妞","age":3,"sex":'母猫已绝育'}],
[["憨瓜","波妞","快来"],["德文","德武","小白"]]

3、注意项

属性名必须使用双引号包裹
字符串类型的值必须用双引号来包裹,JSON不能使用单引号来表示字符串
JSON中不能写注释
JSON最外层必须是对象或数组格式
JSON的值不能是undefined或函数

4、优点

在作用上与XML类似,但是 JSON比XML更小,更快,更易解析。

简单来说:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。

四、JSON与JavaScript对象的关系

1、两者关系

JSON是JavaScript对象的字符串表示法,它使用文本表示一个JS对象的信息。
JSON遵循JavaScript的属性命名规范

// 这是一个对象
var obj = {name: '憨瓜', sex: '公猫已绝育'}

// 这是一个JSON字符串,本质是一个字符串
var json = '{"name": "憨瓜", "sex": "公猫已绝育"}'

2、JSON字符串转化为JS对象

使用JSON.parse()方法

var obj = JSON.parse('{"name": "憨瓜", "sex": "公猫已绝育"}')

// 结果是:{name: '憨瓜', sex: '公猫已绝育'}

3、JS对象转换为JSON字符串

使用JSON.stringify()方法

var json = JSON.stringify({name: '憨瓜', sex: '公猫已绝育'})

//  结果:'{"name": "憨瓜", "sex": "公猫已绝育"}'

五、序列化与反序列化

1、序列化

数据对象转换为字符串的过程,叫做序列化

调用JSON.stringify()函数的操作,叫做JSON序列化。JSON.stringify()函数是序列化函数

2、反序列化

字符串转换为数据对象的过程,叫做反序列化

调用JSON.parse()函数的操作,叫做JSON反序列化。SON.parse()函数是反序列化函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值