1. 程式人生 > >3分鐘讓你明白JSON是什麼

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。)

相關推薦

3分鐘明白JSON是什麼

摘要 本文是從 Understanding JSON: the 3 minute lesson 這篇文章翻譯而來。看了這篇文章,你就知道為什麼說國外的月亮是圓的了,思維方式不是一個數量級的,它完全把你整個腦海裡面的思緒全部都理了出來,有種讀意識流和散

3分鐘讀懂什麽是adesk桌面雲

桌面雲首先,我們要知道aDesk桌面雲就是將本地電腦的桌面操作系統集中於後端服務器上運行,在網絡可達的情況下,通過虛擬交付協議將遠端“操作系統”快速推送給“客戶機”,而用戶可使用任何類型的客戶機(包括PC、瘦客戶機、智能終端、手機等),在任意期間、任意地點訪問屬於自己的桌面環境。矽谷adesk桌面雲將原來綁定

3分鐘搞懂交換機介面資料處理過程

1、需求兩臺主機屬於同一個網段,但是屬於不同vlan,要求實現業務能夠互訪。2、網路拓撲圖3、配置交換機SW1配置如下:vlan 10interface gi 0/0/1 port link accessport de vlan 10 #連線SW2interface gi 0/0/2port link acc

3分鐘搞懂交換機接口數據處理過程

交換 inter 需求 interface face ESS 接口 access nag 1、需求兩臺主機屬於同一個網段,但是屬於不同vlan,要求實現業務能夠互訪。2、網絡拓撲圖3、配置交換機SW1配置如下:vlan 10interface gi 0/0/1 port l

10分鐘明白MySQL是如何利用索引的

一、前言 在MySQL中進行SQL優化的時候,經常會在一些情況下,對MySQL能否利用索引有一些迷惑。 譬如: MySQL 在遇到範圍查詢條件的時候就停止匹配了,那麼到底是哪些範圍條件? MySQL 在LIKE進行模糊匹配的時候又是如何利用索引的呢? MySQL 到

【本人禿頂程式設計師】三分鐘明白 Activity工作流(java運用)

←←←←←←←←←←←← 我都禿頂了,還不點關注! 一. 什麼是工作流 以請假為例,現在大多數公司的請假流程是這樣的 員工打電話(或網聊)向上級提出請假申請——上級口頭同意——上級將請假記錄下來——月底將請假記錄上交公司——公司將請假錄入電腦 採用工作流技術的公司的請假流程是

分鐘明白Objective-C的語法(和Java、C++的對比)

很多想開發iOS,或者正在開發iOS的程式設計師以前都做過Java或者C++,當第一次看到Objective-C的程式碼時都會頭疼,Objective-C的程式碼在語法上和Java, C++有著很大的區別,有的同學會感覺像是看天書一樣。不過,語言都是相通的,有很多共性。下面列

短短3分鐘懂得迭代器是什麼!

  1、什麼是迭代器 - What 迭代器(iterator)是一種物件,它能夠用來遍歷標準模板庫容器中的部分或全部元素,每個迭代器物件代表容器中的確定的地址。 以下程式碼是用python3 做為工作環境來實現的   從上面程式碼我們可以看出什麼,

1分鐘明白AOP是什麼及它的好處

    大家應該明白一個道理,所有廣為人用的框架/技術等.基本都是兩個目的:1.軟體開發期(寫程式碼,測試,上線)內,讓開發人員用更少的程式碼完成同樣的功能實現.2.軟體上線後的維護升級器,讓讓開發人員用更少的程式碼完成同樣的功能實現.    記住這兩條,然後我們來看看AOP

3分鐘學會如何團隊管理!打造高效團隊!

團隊管理超級表格微視訊關鍵詞:   建立團隊  新增成員  加入團隊  企業成員「超級表格微視訊」第五期提升效率、 增強免疫力,盡在超級表格微視訊!請關注每週的公眾號更新,3分鐘讓您玩轉超級表格!如何釋出表單搜尋團隊最直接的用處就是在共享表格時,無須輸入難記的郵箱或者手機號,

分鐘明白悲觀鎖、樂觀鎖

什麼是悲觀鎖?什麼又是樂觀鎖?顧名思義,就是以悲觀或者樂觀的方式去操作資料。以悲觀鎖為例:從來有一個人特別的悲觀,天生的悲觀者,幹什麼都是需要小心翼翼的,吃飯必須先驗驗毒,看看有沒有毒害他。類似於這樣的操作資料方式就是悲觀鎖,總是認為別人會操作他的資料,幹什麼之前為了確保安全

分鐘明白什麼叫ERP

  一天中午,丈夫在外給家裡打電話:“親愛的老婆,晚上我想帶幾個同事回家吃飯可以嗎?”(訂貨意向)   妻子:“當然可以,來幾個人,幾點來,想吃什麼菜?”   丈夫:“6個人,我們7點左右回來,預備些酒、烤鴨、番茄炒蛋、冷盤、蛋花湯……。你看可嗎?” (商務溝通)   妻子:“沒問題,我會預備好的。” (訂單

Docker世界中的配置管理:5分鐘明白如何在Puppet,Chef, Ansible之間選擇

譯者點評:微服務的運用,小型化團隊(Two-pizza team)理念的倡導使更多的公司採用研製週期(Lead Time)來衡量DevOps團隊的執行效率。在實際專案研發結束後,服務的部署頻率(Deploy Frequency)不僅說明了運維的穩定性,還能折射出

分鐘明白到底什麽是Activity --java

Activity 什麽是Activity 寫這篇文章的目的主要是項目組開發第一次使用總結的一點小經驗,不足之處打架多多探討.1.什麽是工作流?以請假為例,現在大多公司的後臺流程是這樣的 a.郵件提出申請 b.上級回郵件同意或其他方式c.上級請假記錄 d.月底將請假上繳公司 e.人事錄電

TLS 1.3 VS TLS 1.2,明白 TLS 1.3 的強大

HTTPS 加密時代已經來臨,近兩年,Google、Baidu、Facebook 等網際網路巨頭,不謀而合地開始大力推行 HTTPS, 2018 年 7 月 25 日,Chrome 68 上線,所有 HTTP 網站都會被明確標記為“不安全”。國內外大到 Google、Facebook 等巨頭,小到個人部落格

5分鐘學會用最高效的工具解析所有Json

如果你是一個Android開發工程師,學會解析Json字串是你的必修課,本篇文章主要以例項的方式手把手教你怎麼做,花五分鐘時間閱讀本篇文章你就可以學會解析所有的Json字串啦。 準備: json字串fastjsonHiJson格式化json工具開始教程: fastjson

分鐘徹底明白Android Activity生命週期(圖文)!

大家好,今天給大家詳解一下Android中Activity的生命週期,我在前面也曾經講過這方面的內容,但是像網上大多數文章一樣,基本都是翻譯Android API,過於籠統,相信大家看了,會有一點點的幫助 ,但是還不能完全吃透,所以我今天特意在重新總結一下. 首先看一下And

3分鐘了解PowerShell發展歷程——PowerShell各版本資料整理

msdn 發展 mona ack html 工作 lease int -1 本文帶你了解PowerShell發展歷程,順便整理了一點資料,方便大家查詢。 Windows PowerShell? 是基於任務的命令行管理程序和腳本語言,專為進行系統管理而設計。 在 .NET F

一篇文章明白python的裝飾器

pri 9.png 不同 概念 ota 一起 數字 上下文 讀取 在看閉包問題之前先來看看關於python中作用域的問題 變量作用域 對於上述代碼中出現錯誤,肯定沒什麽疑問了,畢竟b並沒有定義和賦值,當我們把代碼更改如下後: 再看一個例子: 首先這個錯誤已經非常明顯

一文明白Java字節碼

簡單 文件的 asc IE 自帶 搜索 頂部 ans 系統 也許你寫了無數行的代碼,也許你能非常溜的使用高級語言,但是你未必了解那些高級語言的執行過程。例如大行其道的Java。 Java號稱是一門“一次編譯到處運行”的語言,但是我們對這句話的理解深度又有多少呢?從我們寫的