實字 ( literal ) :是實際以資料表示的值,它以準備被解釋的方式精確寫出。
資料交換的重點是資料,因此 JSON 並未包含 JavaScript 的物件實字的函式。JSON 引用 JavaScript 物件實字的方式純粹只以語意表示物件實字與其屬性,屬性的表示以 名稱:值對展現。
範例:以 JSON 描述我現在所穿的鞋子
{
"brand": "Crocs",
"color": "Pink",
"size": 9,
"hasLaces": false
}
名稱 - 值對的概念廣泛用於電腦,有時稱為鍵 - 值對、屬性 - 值對或欄位 - 值對,本書一概稱為名稱 - 值對。
就是我們常講的 Key : value。
在 JSON 的名稱 - 值對中,值可以是number
、boolean
、null
、array
或 object
。
JSON 使用冒號(:
)來分隔名稱與值,名稱永遠在左側而值永遠在右側。
JSON 所使用的名稱 - 值對在很多系統中是很好用到資料結構。在名稱中使用空格或特殊字元(a-z
、0-9
之外的字元)或許沒有考慮到可攜性,因此避免空格或特殊字元對可攜性很重要。
可攜性:我們在第一章將此詞彙定義為 “以系統雙方都可以接受的方式在兩者間轉移資訊”。
JSON 的名稱 - 字元對中,名稱若被系統當作物件仔入記憶體則會成為 ”屬性“。在某些系統中,屬性可以包括底線字元(_)或數字,但大部分情況下最好保持使用 A-Z
、a-z
等字母字元。因此若想要在名稱中使用多個字詞,可以設置成如下:
{
"lindsaysAnimal": "cat",
"myAnimal"
}
名稱 - 值對中不同的是值並不一定是用雙引號,若值是字串資料型別,我們必須使用雙引號。JSON 其餘的資料型別則不會以雙引號包圍。
JSON 物件前後都需要加上大括號 {
}
如上表示。
製作 JSON 時,想像授封騎士的典禮,國王用劍點在新騎士的兩肩上。你是國王,而你必須以大括號點在 JSON 物件的兩邊。"朕封你為 JSON
騎士物件"
另一種檢視 JSON 語法的方式是透過讀取它的機器的觀點來看。與人類不同,機器是非常依賴規則與指令的生物(?)。當你在非字串值(沒有使用雙引號包圍)中使用下列任何字元時就表示提供資料如何讀取的指示:
如果你忘記以右括號表示“物件的結束”,則物件不會被辨識成物件。如果你在名稱 - 值對清單最後加上逗號,則表示“下面還有”,但其實沒有,這是必須要更正的語法。
運用 JSON 時,檢驗很重要。
有許多線上工具可以檢驗 JSON ,搜尋 "JSON validation" 會有很多結果,下面幾項值得關注:
JSON 作為一種資料交換格式,也可以作為獨立的文件並儲存於檔案系統。
副檔名就是很容易記得的:
.json
。
傳遞資料給他人時經常需要提前告訴對方它的型別,你可能聽過網路上的媒體型別、內容型別或稱為 MIME 型別。此型別格式為 type/subtype,其中一種你可能見過的是 text/html。
JSON 的 MIME 型別是 application/json。
Internet Assigned Numbers Authority ( IANA ) 有媒體型別的清單。
接著下一章要討論的事 JSON 的資料型別。 Continue 繼續 →