Ajax 数据交互格式

数据交换格式

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

前端领域,经常提及的两种数据交换格式分别为XML和JSON。XML用得非常少,所以,重点学习的数据交互格式是JSON。

XML
什么是XML

XML,即可扩展标记语言。因为它也是一种标记语言因此XML和HTML类似。

<note> <!-- note表明这是一条消息 -->
    <to>ls</to> <!-- 指定消息发送的对象 -->
    <from>zs</from> <!-- 消息的发送人 -->
    <heading>通知</heading> <!-- 消息的标题 -->
    <body>晚上开会</body> <!-- 消息的具体内容 -->
</note>
XML和HTML的区别

XML和HTML虽然都是标记语言,但是它们二者没有任何的关系。

HTML被设计用来描述网页上的内容,是网页内容的载体

XML被设计用来传输和存储数据,是数据的载体。

XML的缺点

1、XML格式臃肿,和数据无关的代码多,体积大,传输效率低

2、在Javascript中解析XML比较麻烦

JSON
什么是JSON

概念:JSON,即“javascript对象表示法”。简单来说,JSON就是javascript对象和数组的字符串表示法。他使用文本表示一个JS对象或数组的信息,因此JSON的本质是字符串。

作用:JSON是一种轻量级的文本数据交换格式,在作用上类似于XML,专门用于存储和传输数据,但是JSON比XML更小、更快、更易解析。

现状:JSON已经成为了主流的数据交互格式

JSON的两种结构

对象结构:对象结构在JSON中表示为{ }括起来的内容。数据结构为{ key: value, key: value, …}的键值对结构。其中,可以必须是使用英文的双引号包裹的字符串,value的数据类型可以是数字、字符串、布尔值、null、数组、对象6种类型。

代码练习:

{
    "name":"zs",
    "age":20,
    "gander":"男",
    "address":null,
    "hobby":["吃饭","睡觉","打代码"]
}

数组结构:数组结构在JSON中表示为[ ]括起来的内容。数据结构为[“java”, “javascript”, 30, true, …]。数组中数据的类型可以是数字、字符串、布尔值、null、数组、对象6种类型。

[ "java", "python", "php" ] //数组里放字符串
[100, 200, 300.5] //数组里放数据
[true, false, null] //数组里放布尔值和null
[{"name":"zs", "age":20}, {"name":"ls", "age":30}] //注意数组里是对象的话,对象里的字符串还是都要用双引号包住
[["苹果", "榴莲", "椰子"], [4, 50, 5]] //数组里放数组
JSON注意事项

1、属性名必须用双引号包裹

2、字符串类型的值必须使用双引号包裹

3、JSON中不允许使用单引号表示字符串,必须用双引号包裹

4、JSON中不能写注释

5、JSON的最外层必须是对象或数组格式

6、不能使用undnefined或函数作为JSON的值,必须是上面规定的那六种值。

JSON的作用:在计算机与网络之间存储和传输数据

JSON的本质:用字符串来表示javascript对象数据或数组数据。

JSON和JS对象的关系

JSON是JS对象的字符串表示法,他使用文本表示一个JS对象的信息,本质是一个字符串。例如:

//这是一个JS对象
var obj = {a:'Hello',b:'world'}

//这是一个JSON字符串,本质是一个字符串
var json = '{"a":"hello","b":"world"}'
JSON和JS对象的互转

要实现从JSON字符串转换为JS对象,使用JSON.parse()方法:

var obj = JSON.parse('{"a":"hello","b":"world"}');
//结果为{a:'Hello',b:'world'}

要实现从JS字符串转换为JSON对象,使用JSON.stringify()方法:

var obj = JSON.stringify(a:'Hello',b:'world');
//结果为'{"a":"hello","b":"world"}'

JSON.parse()的应用场景:

代码练习:

var xhr = new XMLHttpResquest()
xhr.open('GET','http://www.liulongbin.top:3006/api/getbooks')
xhr.send()
xhr.onreadystatechange = function(){
    if (xhr.readyState === 4 && xhr.status === 200){ 
        console.log(xhr.responseText)//打印出来发现获取到的数据是一串字符串
        console.log(typeof(xhr.responseText))//打印它的数据类型确定就是一个字符串
        var result = JSON.parse(xhr.responseText)//将得到的数据通过JSON.parse函数转化为对象
        console.log(result) //打印发现result真的是一个对象
    }
}
序列化与反序列化

把数据对象转换为字符串的过程,叫做序列化,例如:调用JSON.stringify()函数的操作,叫做JSON序列化。因此JSON.stringify()函数就叫做序列化函数

把字符串转换为数据对象的过程,叫做反序列化,例如:调用JSON.parse()函数的操作,叫做JSON反序列化。因此JSON.parse()函数就叫做序列化函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值