JSON是一種儲存和交換資料的優良格式,廣泛用於JavaScript但不僅限於此-了解一切有關它的知識!

JSON是一種文件格式,用於儲存和交換資料。

資料以鍵值對的形式儲存。

JSON格式易於人類閱讀,非常適合手動編輯。

這是一個JSON字符串的例子:

{
 "name": "Flavio",
 "age": 35
}

從這個小片段中,你可以看到鍵被包裹在雙引號中,冒號分隔鍵和值,值可以是不同的類型。

鍵值對之間用逗號分隔。

在JSON文件中,間距(空格、制表符、換行)不重要。上述示例等同於

{"name": "Flavio","age": 35}

{"name":
"Flavio","age":
35}

但像一直以來,格式良好的資料更容易理解。

JSON誕生於2002年,由於易於使用和靈活性而迅速流行起來,儘管它起源於JavaScript,但很快就擴展到其他編程語言中。

它在ECMA-404標準中有所描述。

JSON字符串通常存儲在.json文件中,並以application/json的MIME類型在網絡上傳輸。

數據類型

JSON支援一些基本數據類型:

  • Number:不帶引號的任意數字
  • String:用引號包裹的任意字符集
  • Booleantruefalse
  • Array:用方括號包裹的值列表
  • Object:用大括號包裹的鍵值對集合
  • null:表示空值的單詞null

其他任何數據類型都必須被序列化為字符串(然後反序列化)才能存儲在JSON中。

在JavaScript中編碼和解碼JSON

ECMAScript 5於2009年在JavaScript標準中引入了JSON對象,該對象提供了JSON.parse()JSON.stringify()方法,此外還有其他功能。

在JavaScript程序中使用JSON字符串之前,必須將其解析並轉換為JavaScript可以使用的數據。

JSON.parse()將JSON字符串作為參數,並返回包含解析後JSON的對象:

JSON.parse(string)

JSON.stringify()將JavaScript對象作為參數,並返回表示其為JSON的字符串:

JSON.stringify(object)

JSON.parse()還可以接受可選的第二個參數,稱為解析器函數。您可以使用它來進行解析並執行任何自定義操作:

JSON.parse(string, (key, value) => {
 if (key === 'name') {
 return `Name: ${value}`
 } else {
 return value
 }
})

嵌套對象

您可以使用嵌套對象來組織JSON文件中的數據:

{
 "name": {
 "firstName": "Flavio",
 "lastName": "Copes"
 },
 "age": 35,
 "dogs": [
 { "name": "Roger" },
 { "name": "Syd" }
 ],
 "country": {
 "details": {
 "name": "Italy"
 }
 }
}

用於處理JSON的在線工具

有許多有用的工具可供使用。

其中之一是JSONLint,JSON驗證器。使用它可以驗證JSON字符串是否有效。

JSONFormatter是一個很方便的工具,可以根據您的約定格式化JSON字符串,使其更易讀。

JSON Schema

雖然JSON從一開始就非常靈活,但有時需要一些更堅固的組織方式來保持事情的有序性。

這就是JSON Schema的作用。它是一種根據你創建的特定格式對JSON文件進行注釋和驗證的方法。