JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。
JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。
JSON由兩種結構組成:物件(Object)和陣列(Array)。
物件(Object)
物件由一對大括號{}
包圍,其中包含以逗號分隔的一組名稱/值對。名稱和值之間使用冒號 :
分隔。{
"name": "John",
"age": 30,
"city": "New York"
}
陣列(Array)
陣列由一對方括號 []
包圍,其中包含以逗號分隔的值。
[
"apple",
"banana",
"orange"
]
範例
以下是一個包含物件和陣列的JSON範例:
{
"name": "John",
"age": 30,
"city": "New York",
"children": [
{
"name": "Alice",
"age": 5
},
{
"name": "Bob",
"age": 8
}
]
}
在Python中使用 JSON
在程式中使用JSON通常涉及將JSON字串解析為程式語言中的物件或陣列,或者將程式語言中的物件或陣列轉換為JSON字串。
在大多數程式語言中,都有內建的函式或庫可用於處理JSON。例如,在Python中,你可以使用內建的 json
模組來處理JSON資料
json.loads
將 JSON 字串解析為 Python 物件
json.dumps
將 Python 物件轉換為 JSON 字串
import json
# 將 JSON 字串解析為 Python 物件
json_string = '{"name": "John", "age": 30, "city": "New York"}'
python_obj = json.loads(json_string)
print(python_obj)
print(type(python_obj)) # <class 'dict'>
# 將 Python 物件轉換為 JSON 字串
python_obj = {"name": "John", "age": 30, "city": "New York"}
json_string = json.dumps(python_obj)
print(json_string)
print(type(json_string)) # <class 'str'>

終端機結果
處理JSON資料的儲存和載入
儲存JSON檔:
使用json.dump
儲存
import json
data = {"name": "crab", "age": 18, "city": "New York"}
#儲存路徑/檔案名稱
json_path ='F:/python/opencv/Json/data.json'
with open(json_path, "w") as json_file:
json.dump(data, json_file)
在指定的儲存路徑中,產生了data.json的檔案

儲存結果
載入JSON檔:
使用json.load
載入
import json
#儲存路徑/檔案名稱
json_path ='F:/python/opencv/Json/data.json'
with open(json_path, "r") as json_file:
data = json.load(json_file)
print(data)

輸出結果
JSON的語法規則:
- 資料類型:
- JSON支援以下資料類型:字串(String)數字(Number)布林值(Boolean)物件(Object)陣列(Array)null
- 物件(Object):
- 物件以 {} 大括號包圍。
- 物件中的每個成員都是一個名稱/值對,名稱和值之間使用冒號 : 分隔,成員之間使用逗號 , 分隔。
- 名稱必須是字串,且必須用雙引號 " 括起來。
- 值可以是任何合法的JSON資料類型。
- 陣列(Array):
- 陣列以 [] 方括號包圍。
- 陣列中的每個元素都是一個值,元素之間使用逗號 , 分隔。
- 元素可以是任何合法的JSON資料類型。
- 字串(String):
- 字串是一系列Unicode字元的序列。
- 字串必須用雙引號 " 括起來。
- 數字(Number):
- 數字可以是整數或浮點數。
- JSON中的數字表示法與JavaScript中的表示法相同。
- 布林值(Boolean):
- JSON中的布林值表示為 true 或 false(不用引號括起來)。
- null:
- null表示空值或無值。
- 空格和換行:
- JSON忽略空格和換行,所以你可以使用它們來增加資料的可讀性。