JSON是什么?它能带来什么?它和XML比较?
一、JSON是什么?
有一种叫做JSON (JavaScript Object Notation)
的轻量级数据交换格式能够替代XML的工作。它就是JSON。
- 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小。
- 易于解析这种语言, 客户端
JavaScript
可以简单的通过eval()
进行JSON
数据的读取。 - 包括
ActionScript
,C
,C#
,ColdFusion
,Java
,JavaScript
,Perl
,PHP
,Python
,Ruby
等语言服务器端语言, 便于服务器端的解析。 - 各语言对
JSON
支持的特别好,自从Ajax
的流行,JSON
格式传输就更流行了。
二、如果到这里你还不明白?JSON是什么,那么我就发大招了!
其实我在为公司面试的时候,我经常有提到,假如我不知道JSON
是个什么玩意?你怎么告诉我,让我知道是个什么东西。(下面都是我的个人理解,因理解因人而异,受用即可!)
问了这么多人,其实结果不是我想要的,大多数的答案有这些。
- 它是
前端和后台交互
用的。 - 它是
键值对
的。 - 以上2点比较多。还有一些乱七八糟的完全偏离了JSON。
那么它应该是怎样的?应该这么回答,个人认为!
- 首先,它只是一个
字符串
,它只是一个有规则的字符串。(重点) - 然后它的表达(表现)形式是键值对的。其实非常类似Java语言里的
Map
,Objective-C
里的字典,其他语言都有对应的,我说实话其他语言我不知道!我为什么用Map
String泛型,因为理论上它的键值对应该都是字符串,Why?这个问题问的好,我可以这么回答你,因为它本身就是字符串。 - 上面说的理论上表达方式,那么实际目前我们用到的键值对支持什么呢?可以支持String、Number、Array以及Boolean、null什么的。
- 它的作用是用来交互的,不一定Web项目的前后端交互也可以接口,配置文件,文件存储等等都OK。目前移动端比较火,一般的项目都会用JSON来传输。
三、它能带来什么?
- 简洁、简单、体积小等。
- 上手容易,高效。
- 跨语言,目前移动端
Android
、IOS
一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发。 - ....
四、它和XML对比?
- 可读性:看了网上的各种帖子,有说可读性相当,不过基本是说XML可读性好,我认为还凑合。可以打平手。
- 可扩展性:有人说,“XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。不过 JSON在
Javascript
主场作战,可以存储Javascript
复合对象,有着XML
不可比拟的优势”。我赞同一半,我觉得这些帖子都是老帖子,XML可以灵活扩展是因为各种语言有支持的其他Jar包,类库等。但自从JSON火起来后,JSON的支持包,类库等,相信每个语言都很多。像Java就有Jackson
、goson
、json-lib
、FastJson
等等多的去了。 - 编码难度:XML有有
DOM
,SAX
,STAX
等解析技术,JSON也有我上面说的那些,都OK。 - 解码难度:同上。
- 解码编码效率:呵呵!
解析XML有专用CPU、你造吗?
下面给一个Demo
XML Demo
<?xml version="1.0" encoding="utf-8"?> <country> <name>中国</name> <province> <name>黑龙江</name> <citys> <city>哈尔滨</city> <city>大庆</city> </citys> </province> <province> <name>广东</name> <citys> <city>广州</city> <city>深圳</city> <city>珠海</city> </citys> </province> <province> <name>台湾</name> <citys> <city>台北</city> <city>高雄</city> </citys> </province> <province> <name>新疆</name> <citys> <city>乌鲁木齐</city> </citys> </province> </country>
JSON Demo
{ "name": "中国", "province": [ { "name": "黑龙江", "citys": { "city": [ "哈尔滨", "大庆" ] } }, { "name": "广东", "citys": { "city": [ "广州", "深圳", "珠海" ] } }, { "name": "台湾", "citys": { "city": [ "台北", "高雄" ] } }, { "name": "新疆", "citys": { "city": [ "乌鲁木齐" ] } } ] }
总结
当项目没有你接手的时候,没有强行用XML
的情况下,你就用JSON
,没有其他额外强行规定的情况下,你就用JSON
。
本人是在学习Elasticsearch
的时候开始强度的接触JSON,可以这么给你形容,如果Elasticsearch
返回的是一个XML,估计你要哭,Elasticsearch
也要哭,这么和你比较你懂了吗。
本文是由soso撰写,来自SOJSON在线工具,转载请注明出处。https://www.sojson.com/blog/1.html。
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/1.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。