1.1 JSON 的出現
JSON (JavaScript Object Notation) 是一種用於數據交換的文本格式。它由道格拉斯·克羅克福德在2000年代初開發,因其簡單和易用性而廣受歡迎。
JSON 的主要理念是創建一種易於人類閱讀和由程序解析及生成的格式。JSON 最初基於 JavaScript 的語法開發,但其格式如此通用,以至於被許多其他編程語言使用和支持。現在 JSON 可以獨立於 JavaScript 使用:它已成為各種系統和應用程序中數據交換的標準,不論它們是用哪種編程語言編寫的。
JSON 實際上是 JavaScript 語言中對象狀態的記錄。嗯,差不多是這樣的。這就是為什麼 JSON 對於撰寫前端 API 的人特別受歡迎。此外,JSON 廣泛用於存儲配置文件和日誌。
JSON 的主要特點
人類可讀性:
JSON 格式很容易被人閱讀和理解。這使得它在配置文件中使用和在客戶端與服務器之間進行數據交換時非常方便。
語言獨立性:
儘管 JSON 最初基於 JavaScript 語法,但它可以與任何編程語言一起使用。許多編程語言都提供了內建的庫來處理 JSON。
解析簡單:
解析("parsing")是指分析數據結構(通常是文本或代碼)的過程,以提取有意義的信息。在編程中,解析通常用於處理文本數據。JSON 可以在客戶端和服務器端輕鬆解析和生成。現在每種編程語言中都有一個庫,讓你可以輕鬆地將對象轉換成 JSON 並返回。
標準與明確的領導者:
大約10年前,JSON 與 XML 競爭 API 標準。現在 JSON 已經勝出並成為明確的領導者。在你的後端 API 中,你可以只支援 JSON,這已經非常足夠,即使你的 API 是給其他服務器調用的。
1.2 JSON 的結構
JSON 表示一組 "鍵-值" 對,其語法由兩個主要結構組成:
對象:對象是無序的 "鍵-值" 對的集合。鍵是字符串,而值可以是任何 JSON 支持的數據類型。
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "New York",
"zipCode": "10001"
}
}
陣列/列表:陣列是有序的值集合(類似於 Python 中的列表)。值可以是任何 JSON 支持的數據類型。
["Apple", "Banana", "Cherry", 100, 3.14, true]
很像 Python 的對象,不是嗎?
事情就是這樣,因為 JSON 實際上是 JavaScript 中數據記錄的標準,而 JavaScript 當時受到了 Python 的啟發。所以你會喜歡使用 JSON。
1.3 JSON 的數據類型
JSON 支持以下數據類型:
字符串:使用雙引號表示。
"name": "John"
數字:可以是整數或浮點數。
"age": 30
對象:無序的 "鍵-值" 對的集合。
"address": {
"city": "New York",
"zipCode": "10001"
}
陣列/列表:有序的值集合。
"courses": ["Math", "Science"]
布爾值: true
或 false
。
"isStudent": false
與 Python 不同,true
和 false
這裡是小寫。
null
:表示空值。
"middleName": null
日期和時間:作為字符串傳遞。
{
"datetime": "2023-05-15T14:30:00Z",
"date": "2023-05-15",
"time": "14:30:00"
}
以前有時候會以 UNIX timestamp 格式作為數字傳遞,但這種方式已經過時。
GO TO FULL VERSION