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
:用引號包裹的任意字符集Boolean
:true
或false
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文件進行注釋和驗證的方法。