在编程中,前后端为了确保双方能够顺利传递信息,需要约定一种信息交换的方式。其中JSON作为一种轻量级、易读写的数据格式,就像在沙滩上画数字一样,成为了前后端信息交互的默契方式。通过约定好的JSON数据结构,请求和响应双方能够更加高效地交换信息,实现信息的无缝传递。
那么,JSON就是信息交换所使用的的一种数据格式
常见的数据交互的格式
常见的数据交互格式包括纯文本、XML、JSON等不同结构,让我们分别来看一下它们之间的区别。
1. 纯文本格式
● 竖线分割的(姓名|性别|地址|年龄|手机号)
● 逗号分割的(姓名,性别,地址,年龄,手机号)
2. XML格式
3. JSON格式
各种格式的对比
1. 文本格式
a. 优点:内容简洁,传输数据量少
b. 缺点1:无法适应复杂的业务变化,例如后端将电话与年龄调换位置,前端如果不调整数据就会错乱
c. 缺点2:不支持有层级结构的,层级结构下面会展开讲解
d. 缺点3:如果数据中包含竖线,解析时就会出现数据错乱,例如“张三|男|沙阳路18号北京科技职业学院内|23|13333335555”中的地址信息改为“张三|男|沙阳路18号北京科技职业学院内-服务楼2|3|4层|23|13333335555”,解析时就会多出来很多个字段
2. xml格式
a. 优点1:格式清晰,顺序可调整,后端新增项也不影响前端
b. 优点2:支持层级结构
c. 优点3:数据内容与标签相同时可进行转义
d. 缺点1:数据传输量大,是文本的好几倍,属性描述字段需要有开始和结束标签,例如:“<name>张三</name>”
3. json格式
a. 优点1:格式清晰,顺序可调整,后端新增项不会影响影响前端
b. 优点2:支持层级结构(后面展开说)
c. 优点3:数据内容与标签相同时可进行转义
d. 优点4:数据传输量适当,属性描述字段不需要有闭合标签,例如:“name:"张三"”
展开说说JSON?
JSON,即JavaScript Object Notation,直译是js对象标记。是一种轻量级的数据交换格式,它由键值对组成,用于表示结构化的数据
既然咱们展开说就说的直白一点,JSON的是由js当中的对象数据类型演化而来,用于描述某种对象的属性和值的,并且具有上级结构,为了方便传输,把这种数据改造为字符串,诶,这不就来了吗,js对象数据类型如下:
但,这是js的对象数据类型,数据类型本质是内存中存储数据的方式,我们不可能把内存传输给后台。
不能传输内存,那就转为字符串传递呗,按照对象数据类型的这个结构,变为字符串格式的,这多清晰明了,数据量也不是很大,又能很好兼顾层级结构(省市县const addr),说干就干,于是我们转为下面这个样子:
JSON的组成
● 大括号 {}:用于表示对象的开始和结束,对象是由一组无序的键值对组成的。
● 方括号 []:用于表示数组的开始和结束,数组是由一组有序的值组成的。
● 冒号 ::用于分隔键和值,将键与对应的值关联在一起。
● 逗号 ,:用于分隔数组或对象中的不同键值对或值,将它们分开。
● 双引号 " 或单引号 ':用于包围字符串,表示字符串的开始和结束。
● 反斜杠 \:用于转义特殊字符,确保特殊字符的正确解析。
写到最后:JSON的优雅之处
● 数据体积:JSON通常比XML更小巧。由于JSON采用了简洁的语法,不需要像XML那样添加大量的标签和属性,因此JSON的数据体积相对较小。这使得JSON在网络传输中消耗的带宽更少,有利于提高数据传输的效率。
● 语法复杂性:相比较而言,XML的语法相对复杂一些。XML需要使用起始标签和结束标签来包裹数据,而JSON只需要使用花括号 {} 和方括号 [] 就可以表示对象和数组。这使得JSON的语法更加简洁和易读。
● 解析效率:由于JSON的语法相对简单,它的解析速度通常比XML更快。这对于大规模数据的处理和解析非常重要,尤其在需要实时响应的应用场景下。
● 兼容性:JSON在前端和后端的兼容性较好。几乎所有主流编程语言都有JSON的解析和序列化库,这使得JSON在前后端交互时更为便捷。
● 可读性:JSON相对于XML更易读写。JSON的结构类似于JavaScript对象,使得开发者能够更直观地理解数据结构,便于调试和开发。
● 扩展性:尽管XML在一些特定领域具有更好的扩展性,但对于一般的树形数据结构,JSON的扩展性也是足够的。JSON支持嵌套对象和数组,可以灵活地表示复杂的数据结构。
综上所述,JSON在处理省市县和汽车等树形数据结构时具有更小的数据体积、更简洁的语法、更快的解析效率和更好的兼容性等优势。这些优势使得JSON成为处理树形数据结构的首选数据格式,尤其在现代Web应用和移动应用中广泛应用。然而,对于一些特定需求,XML仍然可能是更好的选择,比如需要更复杂结构和更强的扩展性的场景。
推荐一个受到超多好评的终生学习小程序「千锋学习站」。
全网超火的课程资源:涵盖18个IT行业热门课程,3000G精品授课视频,从入门到精通,理论+实战,小白适用! 全网超牛的公开课:定期邀请一线大厂大佬来直播间宣讲,全程干货,福利满满,从基础理论到实战案例,分享实战IT技能,拒绝纸上谈兵! 全网超全的题库资源:1800个知识点练习,10万道面试真题,沉浸式刷题练习,帮助各位同学夯实基础,提升技术水平,为升职加薪保驾护航!