JSON是什么?它能带来什么?它和XML比较?

开发 前端
有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作。它就是JSON。各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。

[[264053]]

  • 一、JSON是什么?
  • 二、如果到这里你还不明白?JSON是什么,那么我就发大招了!
  • 三、它能带来什么?
  • 四、它和XML对比?
  • XML Demo
  • JSON Demo
  • Java常用的json库
  • 总结

一、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里的字典,其他语言都有对应的,我说实话其他语言我不知道!我为什么用MapString泛型,因为理论上它的键值对应该都是字符串,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

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <country> 
  3.  <name>中国</name
  4.  <province> 
  5.  <name>黑龙江</name
  6.  <citys> 
  7.  <city>哈尔滨</city> 
  8.  <city>大庆</city> 
  9.  </citys> 
  10.  </province> 
  11.  <province> 
  12.  <name>广东</name
  13.  <citys> 
  14.  <city>广州</city> 
  15.  <city>深圳</city> 
  16.  <city>珠海</city> 
  17.  </citys> 
  18.  </province> 
  19.  <province> 
  20.  <name>台湾</name
  21.  <citys> 
  22.  <city>台北</city> 
  23.  <city>高雄</city> 
  24.  </citys> 
  25.  </province> 
  26.  <province> 
  27.  <name>新疆</name
  28.  <citys> 
  29.  <city>乌鲁木齐</city> 
  30.  </citys> 
  31.  </province> 
  32. </country> 

JSON Demo

  1.  "name""中国", 
  2.  "province": [  {  "name""黑龙江",  "citys": {  "city": [  "哈尔滨",  "大庆"  ]  }  },  {  "name""广东",  "citys": {  "city": [  "广州",  "深圳",  "珠海"  ]  }  },  {  "name""台湾"
  3.  "citys": {  "city": [  "台北",  "高雄"  ]  }  },  {  "name""新疆",  "citys": {  "city": [  "乌鲁木齐"  ]  }  }  ] 

Java常用的json库

我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式。

  • 1、JSON官方
  • 2、GSON
  • 3、FastJSON
  • 4、jackson

总结

当项目没有你接手的时候,没有强行用XML的情况下,你就用JSON,没有其他额外强行规定的情况下,你就用JSON。

本人是在学习Elasticsearch的时候开始强度的接触JSON,可以这么给你形容,如果Elasticsearch返回的是一个XML,估计你要哭,Elasticsearch也要哭,这么和你比较你懂了吗。 

责任编辑:庞桂玉 来源: 今日头条
相关推荐

2023-10-04 00:06:00

网络网络攻击

2019-03-04 09:39:41

Java开发代码

2021-07-09 20:12:48

大数据农业

2021-12-07 16:14:12

Windows 11 Chrome OS移动用户

2015-08-28 16:09:44

2019-08-01 07:48:27

物联网模块物联网IOT

2022-03-31 11:38:09

经营分析传统企业运营商

2014-10-10 13:46:33

Docker

2023-04-17 14:21:19

5G无线技术

2023-05-04 11:39:17

经营分析流量项目

2022-02-24 23:37:19

区块链钱包比特币

2022-06-06 17:36:11

物联网颠覆物联网

2020-11-24 07:41:52

边缘计算

2021-05-09 09:30:13

Docker操作系统容器

2022-08-03 11:07:00

5GRedCap

2022-04-08 10:15:29

VueReacHooks

2020-10-20 09:57:04

量子计算人工智能技术

2018-02-28 15:39:52

2021-07-29 11:46:27

NAS存储NAS服务器

2015-11-05 10:39:01

库存可视化RFID物联网
点赞
收藏

51CTO技术栈公众号