3分鐘讓你明白JSON是什麼
摘要 本文是從 Understanding JSON: the 3 minute lesson這篇文章翻譯而來。看了這篇文章,你就知道為什麼說國外的月亮是圓的了,思維方式不是一個數量級的,它完全把你整個腦海裡面的思緒全部都理了出來,有種讀意識流和散文的享受。
如果你跟我一樣(我擔心你就是),那麼,到目前為止,這應該是你對JSON的經驗:
兩個月前你從沒聽說過JSON
一個月前你聽說了這個詞但沒有留意
一週前你發現這個詞被提到多次,開始想,沒錯…又有一些垃圾東西要學了
今天你被心靈深處的一個鬧鈴鬧醒,心想:這該死的json究竟是個什麼東西?為什麼突然間到處都是它了!
於是晚上我乘坐了一輛慢騰騰的公交回到家(週五通常都是很慢),然後給自己找了一大堆關於JSON資料。所以我可以文雅的帶你進入JSON的大門。
這幾個字母是什麼意思?
JavaScript Object Notation.
[一個滑稽的名字。它應該被稱作Lightweight Ecmascript Object Notation,或簡稱’LEON’。 ]
它是個什麼東西?
JSON是一種傳遞物件的語法,物件可以是name/value對,陣列和其他物件。
下面是一小段JSON程式碼:
{
"skillz": {
"web": [
{
"name": "html",
"years": "5"
},
{
"name": "css",
"years": "3"
}
],
"database": [
{
"name": "sql",
"years": "7"
}
]
}
}
你看懂了吧?那麼當你再看到它時就知道它是JSON了。主要部分:
花括弧,方括弧,冒號和逗號
花括弧表示一個“容器”
方括號裝載陣列
名稱和值用冒號隔開
陣列元素通過逗號隔開
把它想成“得了厭食症的XML”
(如果你跟我一樣老,可以把它想成有層次關係的’.INI’檔案)
(如果你是個自以為是的Lisp小丑,可以把它想成”S-expressions”,自以為是吧)
JSON很像XML,因為:
他們都“自我描述”,這意味著值都是可列舉的,是“人類可讀”的
都是有層級的。(例如你可以在值裡再存放值)
都能被多種的程式語言解析和使用
都能使用AJAX方法來傳遞(例如httpWebRequest)
JSON跟XML不一樣,因為:
XML裡在元素的開始和結尾處有尖括號和標籤名:JSON使用花括號,而且只在資料的開始和結束時使用。
JSON更簡練,毫無疑問更適合人類書寫,也許也能讓我們更快速的閱讀。
JSON可以在JavaScript裡簡單的傳遞到eval()方法裡使用
JSON裡有陣列{每個元素沒有自己的名稱}
在XML裡你可以對一個元素使用任意想要的名稱,在JSON裡你不能使用Javascript裡的保留字
可是為什麼?它有什麼好的?
當你寫ajax之類的東西時,如果你使用JSON,你就免去了手工拼寫XML。更迅速。
同樣,當你寫ajax之類的東西時,怎樣最簡單?XML方式還是JSON方式:
XML方式:
取回一個XML檔案
迴圈它,從中提取值
處理這些值,等
JSON方式:
取回JSON字串。
‘eval’ JSON資料
它是物件導向的嗎?
No,嚴格的說,不是。
就像是VB6裡的物件導向一樣。它提供了很好的封裝機制,你可以使用它把資料和方法分離出來,但它不提供任何的繼承,多型,介面,或其它類似的物件導向的東西
很顯然,它是使javascript變得更易於維護,分析和複用的方向上前進了一步。
Thomas Frank寫了一個靈巧的javascript庫,叫做classyJSON,它在JSON程式碼上增加了繼承和定義範圍等特徵。
它只是用在客戶端嗎?
是,也不是。在伺服器端你可以容易的把物件序列化成JSON或反之。對於.net,程式設計師可以使用類似Json.net的類庫使這些操作自動化(我估計是使用反射機制),或你使用自己的程式來做這些事,可能會更快些。
3分鐘將近結束….
就我所知,JSON是由一個叫做Douglas Crockford的傢伙發明的。如果你喜歡的話,可以看一下他的網站,他非常的有趣。
現在去讀一下懂JSON的人寫的東西
(從Delicious using JSON上搜刮來的!)
DOM Query Speed Test
24 ways: Don’t be eval()
Understanding JSON: the 3 minute lesson
Serializing Objects as JavaScript using Atlas, JSON.NET and AjaxPro
JSON – Wikipedia, the free encyclopedia
Introduction to JSON
XML.com: JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript
Classy JSON
ajax json tutoral
XML to JSON – a converter
這就是全部。
我在幾分鐘的時間裡只能整理出這些東西——所有我說的有些東西可能完全是錯的。如果是這樣,請留言告訴我,告訴我我有多傻。我會很高興的糾正任何一個錯誤。祝你好運!
(邊注:如果你把{和}替換成”<”和“/>”,把”:”換成“/”…你會得到一個非常像gaXml的東西。有趣的世界。
(邊注2:Jason 和 Ajax 都是希臘神話中的英雄。預告:另外一些即將出現的技術垃圾包括:Heracles, Perseus, Deucalion, Theseus and Bellerophon。)
相關文章
- 4句話讓你明白什麼是AIAI
- 5分鐘讓您明白TRIZ理論原理是什麼
- 讓你明白——什麼才是網路遊戲?(轉)遊戲
- 十分鐘明白什麼是容器技術
- 5分鐘讓你明白HTTP協議HTTP協議
- 一個對話讓你明白架構師是做什麼的?架構
- 五分鐘,讓你明白MySQL是怎麼選擇索引《死磕MySQL系列 六》MySql索引
- 30分鐘,讓你徹底明白Promise原理Promise
- 什麼是NoSQL?這裡給你整明白SQL
- 一篇簡文讓你明白CPU到底是什麼?為什麼能夠實現計算?
- 到底什麼是AQS?面試時你能說明白嗎!AQS面試
- 三分鐘讓你理解什麼是敏捷開發,這才是敏捷開發......敏捷
- 網站CDN加速是什麼? 看完這篇你就明白了!網站
- JSON是什麼,有什麼用,怎麼寫jsonJSON
- 一文讓你明白 Git 分支是如何工作的Git
- 11行虛擬碼給你講明白什麼是演算法演算法
- Docker是什麼,有什麼用?一看就明白Docker
- 5分鐘讓你明白“軟連結”和“硬連結”的區別
- 5 分鐘讓你明白 “軟連結” 和“硬連結”的區別
- ETL都沒弄懂,談什麼大資料 ?我用一分鐘給你整明白大資料
- 程式設計師是什麼讓你停滯不前—是安逸,還是….程式設計師
- DevOps是什麼?5分鐘帶你瞭解DevOpsdev
- 一分鐘告訴你究竟DevOps是什麼鬼?dev
- 30 分鐘理解 CORB 是什麼ORB
- “十二問”讓你全面瞭解MES系統是什麼!
- 什麼是「小島秀夫遊戲」?讓監督親自告訴你遊戲
- 智慧數字經營是什麼?幾點讓你看懂!
- 甘特圖是什麼,怎麼製作?一文讓你看懂
- 智慧數字經營是什麼?你疑惑的點,這裡全部說明白了
- 5個核心關鍵點,讓你徹底明白低程式碼能解決什麼問題!
- 3分鐘整明白啥是 快取雪崩快取
- 是什麼JSON,簡單介紹JSON
- 什麼是DNS劫持?如何讓你的網站免遭DNS劫持?DNS網站
- 是什麼讓你做的小遊戲聽起來怪怪的?遊戲
- 什麼是JAVAEE? 2分鐘瞭解Java
- Elasticsearch:是什麼?你為什麼需要他?Elasticsearch
- 你知道什麼是 GitHub Action 麼?Github
- 讓 APISpace 告訴你什麼場景使用什麼APIAPI