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

soゝso 2016-08-22 18:46:31 10293

一、JSON是什么?

有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作。它就是JSON。

  1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小。
  2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取。
  3. 包括ActionScriptC C#ColdFusionJavaJavaScriptPerlPHPPythonRuby等语言服务器端语言, 便于服务器端的解析。
  4. 各语言对JSON支持的特别好,自从Ajax的流行,JSON格式传输就更流行了。

二、如果到这里你还不明白?JSON是什么,那么我就发大招了!

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

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

  1. 它是前端和后台交互用的。
  2. 它是键值对的。
  3. 以上2点比较多。还有一些乱七八糟的完全偏离了JSON。

那么它应该是怎样的?应该这么回答,个人认为!

  1. 首先,它只是一个字符串,它只是一个有规则的字符串。(重点)
  2. 然后它的表达(表现)形式是键值对的。其实非常类似Java语言里的MapObjective-C里的字典,其他语言都有对应的,我说实话其他语言我不知道!我为什么用MapString泛型,因为理论上它的键值对应该都是字符串,Why?这个问题问的好,我可以这么回答你,因为它本身就是字符串。
  3. 上面说的理论上表达方式,那么实际目前我们用到的键值对支持什么呢?可以支持String、Number、Array以及Boolean、null什么的。
  4. 它的作用是用来交互的,不一定Web项目的前后端交互也可以接口,配置文件,文件存储等等都OK。目前移动端比较火,一般的项目都会用JSON来传输。

三、它能带来什么?

  1. 简洁、简单、体积小等。
  2. 上手容易,高效。
  3. 跨语言,目前移动端AndroidIOS一般项目构造都是其他语言提供接口(JSON方式),移动端读取接口的方式开发。
  4. ....

四、它和XML对比?

  1. 可读性:看了网上的各种帖子,有说可读性相当,不过基本是说XML可读性好,我认为还凑合。可以打平手。
  2. 可扩展性:有人说,“XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。不过 JSON在Javascript主场作战,可以存储Javascript复合对象,有着XML不可比拟的优势”。我赞同一半,我觉得这些帖子都是老帖子,XML可以灵活扩展是因为各种语言有支持的其他Jar包,类库等。但自从JSON火起来后,JSON的支持包,类库等,相信每个语言都很多。像Java就有Jacksongosonjson-libFastJson等等多的去了。
  3. 编码难度:XML有有DOMSAXSTAX等解析技术,JSON也有我上面说的那些,都OK。
  4. 解码难度:同上。
  5. 解码编码效率:呵呵!解析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

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

相关文章
对Redis的理解,Redis是什么,RedisMemcache谁快?
Shiro教程(一)Shiro 是什么?Shiro的简单介绍。
Description的作用,Description对SEO有什么影响
什么undefined、NaNInfinity可以被赋值,而null不可以?
什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice?
什么是Referer?Referer的作用?空Referer是怎回事?
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比
中国人还相信什么什么都不相信了!
网站如何设置404页面、500等错误页面,有什么漏洞?怎预防?
合理管理、提高Javascript的性能
最新文章
iOS版淘宝打开提示“您使用的程序是内测版本,将于2020-03-28到期,到期将无法使用,请尽快下载最新版本” 879
关于一位“caoz的梦呓”的大佬在微信公众号喷我的整体回复 58165
DNS TXT记录添加方法,ICP备案信息屏蔽查询处理方案讲解 2857
SEO优化的最佳时间段即将来临,春节最佳SEO优化讲解 2304
SEO实战分析-排名最近突然掉光了问题排查,几个大站关键词下降SEO问题分析 2307
Java模拟WSS websocket ssl请求,Java WSS模拟请求代码示例 4982
Springboot 集成 Ehcache 代码讲解 5740
阿里云 RDS Specified key was too long; max key length is 767 bytes 解决方案 2196
Springboot HTTP Get/Post 请求讲解,Springboot几行代码完成Http请求 6096
天气免费API接口,天气API接口请求讲解及源码下载 28862
最热文章
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 370239
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 343732
免费天气API,全国天气 JSON API接口,可以获取五天的天气预报 308150
免费天气API,天气JSON API,不限次数获取十五天的天气预报 215877
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 207649
Elasticsearch教程(四) elasticsearch head 插件安装和使用 181621
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 113981
Elasticsearch教程(一),全程直播(小白级别) 101493
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 101121
Elasticsearch教程(六) elasticsearch Client创建 90306

骚码加入我们 / 千人QQ群:259217951

入群需要5元为的是没有垃圾广告,如果没有QQ钱包,可以加群主拉进。

二维码生成 来自 >> 二维码生成器

支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...