JSON是什么,为什么这么流行?

简介: 前几天分享了《Spring Boot 返回 JSON 数据,一分钟搞定!》,好些人对 JSON 还没有一个清晰的认识,今天栈长带大家来认识一下什么是JSON。

1、JSON是什么?


前几天分享了《Spring Boot 返回 JSON 数据,一分钟搞定!》,好些人对 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常被用作序列化,推荐阅读:关于Java序列化你应该知道的一切。


2、如果到这里你还不明白?


JSON是什么,那么我就发大招了!


其实我在为公司面试的时候,我经常有提到,假如我不知道JSON是个什么玩意?你怎么告诉我,让我知道是个什么东西。(下面都是我的个人理解,因理解因人而异,受用即可!)


问了这么多人,其实结果不是我想要的,大多数的答案有这些。


它是前端和后台交互用的。 它是键值对的。


以上2点比较多。还有一些乱七八糟的完全偏离了JSON。那么它应该是怎样的?应该这么回答,个人认为!


首先,它只是一个字符串,它只是一个有规则的字符串。(重点)然后它的表达(表现)形式是键值对的。其实非常类似Java语言里的Map,Objective-C里的字典,其他语言都有对应的,我说实话其他语言我不知道!


我为什么用MapString泛型,因为理论上它的键值对应该都是字符串,Why?这个问题问的好,我可以这么回答你,因为它本身就是字符串。


上面说的理论上表达方式,那么实际目前我们用到的键值对支持什么呢?可以支持String、Number、Array以及Boolean、null什么的。


它的作用是用来交互的,不一定Web项目的前后端交互也可以接口,配置文件,文件存储等等都OK。目前移动端比较火,一般的项目都会用JSON来传输。


3、它能带来什么?


简洁、简单、体积小等。


上手容易,高效。


跨语言,目前移动端Android、IOS一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发。 ….


4、它和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、你造吗?


5、DEMO


XML Demo


    中国name>              黑龙江name>                      哈尔滨city>             大庆city>         citys>     province>              广东name>                      广州city>             深圳city>             珠海city>         citys>     province>              台湾name>                      台北city>             高雄city>         citys>     province>              新疆name>                      乌鲁木齐city>         citys>     province> country>


JSON Demo


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


6、Java常用的json库


我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式。JSON常被用作序列化,推荐阅读:关于Java序列化你应该知道的一切。


JSON官方


GSON


FastJSON


Jackson


7、总结


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


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


相关文章
|
存储 JSON JavaScript
JSON 是什么
JSON 是什么
141 0
|
JSON fastjson 数据格式
json是什么,看了之后我才恍然大悟(二)
3. 返回一个List集合 4. 返回一个时间 (重要) 5. FastJson
json是什么,看了之后我才恍然大悟(二)
|
存储 JSON JavaScript
json是什么,看了之后我才恍然大悟(一)
十、JSON 前言 1.Controller返回json数据 2.上面的乱码问题
json是什么,看了之后我才恍然大悟(一)
|
1月前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
|
2月前
|
存储 JSON Apache
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
在最新发布的阿里云数据库 SelectDB 的内核 Apache Doris 2.1 新版本中,我们引入了全新的数据类型 Variant,对半结构化数据分析能力进行了全面增强。无需提前在表结构中定义具体的列,彻底改变了 Doris 过去基于 String、JSONB 等行存类型的存储和查询方式。
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
|
3天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
|
10天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
22 0
|
12天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{"name": "John", "age": 30, "city": "New York"}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
17 1
|
12天前
|
JSON 数据格式 Python
Python处理JSON数据
【4月更文挑战第30天】该内容介绍了Python处理JSON数据的三个方法:1)使用`json.loads()`尝试解析字符串以验证其是否为有效JSON,通过捕获`JSONDecodeError`异常判断有效性;2)通过`json.dumps()`的`indent`参数格式化输出JSON数据,使其更易读;3)处理JSON中的日期,利用`dateutil`库将日期转换为字符串进行序列化和反序列化。
23 4