JSON是什么?它能帶來什么?它和XML比較?

JSON 2016-08-22 18:46:31 17091

一、JSON是什么?

有一種叫做JSON (JavaScript Object Notation) 的輕量級數據交換格式能夠替代XML的工作。它就是JSON。

  1. 數據格式比較簡單, 易于讀寫, 格式都是壓縮的, 占用帶寬小。
  2. 易于解析這種語言, 客戶端JavaScript可以簡單的通過eval()進行JSON數據的讀取。
  3. 包括ActionScript, C, C#, ColdFusion,Java,JavaScript,Perl,PHP,Python,Ruby等語言服務器端語言, 便于服務器端的解析。
  4. 各語言對JSON支持的特別好,自從Ajax的流行,JSON格式傳輸就更流行了。

二、如果到這里你還不明白?JSON是什么,那么我就發大招了!

其實我在為公司面試的時候,我經常有提到,假如我不知道JSON是個什么玩意?你怎么告訴我,讓我知道是個什么東西。(下面都是我的個人理解,因理解因人而異,受用即可?。?/code>

問了這么多人,其實結果不是我想要的,大多數的答案有這些。

  1. 它是前端和后臺交互用的。
  2. 它是鍵值對的。
  3. 以上2點比較多。還有一些亂七八糟的完全偏離了JSON。

那么它應該是怎樣的?應該這么回答,個人認為!

  1. 首先,它只是一個字符串,它只是一個有規則的字符串。(重點)
  2. 然后它的表達(表現)形式是鍵值對的。其實非常類似Java語言里的Map,Objective-C里的字典,其他語言都有對應的,我說實話其他語言我不知道!我為什么用MapString泛型,因為理論上它的鍵值對應該都是字符串,Why?這個問題問的好,我可以這么回答你,因為它本身就是字符串。
  3. 上面說的理論上表達方式,那么實際目前我們用到的鍵值對支持什么呢?可以支持String、Number、Array以及Boolean、null什么的。
  4. 它的作用是用來交互的,不一定Web項目的前后端交互也可以接口,配置文件,文件存儲等等都OK。目前移動端比較火,一般的項目都會用JSON來傳輸。

三、它能帶來什么?

  1. 簡潔、簡單、體積小等。
  2. 上手容易,高效。
  3. 跨語言,目前移動端Android、IOS一般項目構造都是其他語言提供接口(JSON方式),移動端讀取接口的方式開發。
  4. ....

四、它和XML對比?

  1. 可讀性:看了網上的各種帖子,有說可讀性相當,不過基本是說XML可讀性好,我認為還湊合??梢源蚱绞?。
  2. 可擴展性:有人說,“XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。不過 JSON在Javascript主場作戰,可以存儲Javascript復合對象,有著XML不可比擬的優勢”。我贊同一半,我覺得這些帖子都是老帖子,XML可以靈活擴展是因為各種語言有支持的其他Jar包,類庫等。但自從JSON火起來后,JSON的支持包,類庫等,相信每個語言都很多。像Java就有Jackson、goson、json-lib、FastJson等等多的去了。
  3. 編碼難度:XML有有DOM,SAX,STAX等解析技術,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在線工具,轉載請注明出處。http://www.267332.tw/blog/1.html。


版權所屬:SO JSON在線解析

原文地址:http://www.267332.tw/blog/1.html

轉載時必須以鏈接形式注明原始出處及本聲明。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關于作者
一個低調而悶騷的男人。
相關文章
最新文章
當我談 HTTP 時,我談些什么? 2309
新浪短鏈(t.cn)最新申請官方API的方法講解。 14080
QUIC / HTTP3 協議詳細分析講解 2032
恭喜那個做云存儲的七牛云完成 F 輪 10 億人民幣的融資,開啟新的云旅程 3013
Autojs怎么安全加密?Autojs在線加密工具注意事項。 5990
Java JSON 組件選型之 FastJson 為什么總有漏洞? 17455
使用七牛云存儲實現圖片API,自動刪除圖片方案合集 3464
神速ICP備案經驗分享,ICP備案居然一天就通過了 4686
百度加強推送URL鏈接,百度SEO強行推送鏈接JavaScript代碼案例講解。 4598
SOJSON 拓展服務器被DDos攻擊了一晚上,是如何解決的? 6204
最熱文章
蘋果電腦Mac怎么恢復出廠系統?蘋果系統怎么重裝系統? 491138
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 441992
最新MyEclipse8.5注冊碼,有效期到2020年 (已經更新) 391434
免費天氣API,全國天氣 JSON API接口,可以獲取五天的天氣預報 380810
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 257521
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 227675
談談斐訊路由器劫持,你用斐訊路由器,你需要知道的事情 156112
Elasticsearch教程(一),全程直播(小白級別) 133687
Java 信任所有SSL證書,HTTPS請求拋錯,忽略證書請求完美解決 121589
Elasticsearch教程(五) elasticsearch Mapping的創建 106633

      綜合技術交流:點擊加入--> [SO JSON官方交流①群][收費]

      綜合技術交流:點擊加入--> [SO JSON官方交流②群][免費]

      要求:不能發廣告、暴力、政治、付費教程,違者直接踢出。

      備注:入群費用5元,沒有QQ錢包,可以先支付寶 or 微信掃碼支付5元贊助后,我拉您進去。QQ聯系我。

      掃碼贊助:贊助二維碼。

      技術交流QQ群:①群259217951,②群166848545

      站長郵箱:[email protected]

      對頁面內容有任何疑問和建議,請聯系我們。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

查看我的收藏

正在加載... ...

    广西十一选5开奖结