剛開始學習 Python 的初學者可能會混淆 JSON 格式和 Python 字典。這兩種格式都使用 {} 花括號,並以 key:value 結構來表示數據,但實際上在用途和語法上存在差異。在這篇文章中,我們將說明 JSON 和字典的 共通點、差異,以及如何在 Python 中進行 JSON 和字典之間的轉換。
1. JSON 與 Python 字典的共通點
JSON 和 Python 字典都以 鍵-值對 的形式來表示數據,這是它們的共通點。正因為這種相似性,所以初學者經常會有相同的感受。
主要共通點
- 鍵-值結構: 這兩種格式都以
{key: value}
形式來儲存數據。 - 支持嵌套結構: 可以在內部嵌套列表、其他對象等來表示數據。
示例
JSON 格式:
{
"name": "Alice",
"age": 25,
"skills": ["Python", "Django"]
}
Python 字典:
person = {
"name": "Alice",
"age": 25,
"skills": ["Python", "Django"]
}
2. JSON 與 Python 字典的差異
雖然 JSON 和字典在表面上看起來相似,但在語法和使用目的上卻存在差異。
2.1 使用目的的差異
- JSON: 一種用於數據交換的 語言獨立的標準格式。它被用於 Python、JavaScript、Java、C++ 等多種語言之間的數據交換。
- Python 字典: 用於在 Python 內部存儲和操作數據的 Python 專用數據結構。
2.2 語法上的差異
JSON 與 Python 字典在語法上有以下幾個差異:
特徵 | JSON | Python 字典 |
---|---|---|
字串表示 | 字串必須以 " 表示 |
字串可以使用 ' 或 " 皆可 |
鍵的類型 | 鍵必須是字串 | 鍵可以是字串、數字等多種類型 |
值的類型 | 有限制 (字串、數字、陣列等) | 無限制 (可以包含函數、物件等) |
布林值 | true , false |
True , False |
空值 | null |
None |
註解 | 不支持註解 | 可以使用註解 |
示例分析差異
JSON:
{
"name": "Alice",
"age": 25,
"isActive": true,
"nickname": null
}
Python 字典:
person = {
"name": "Alice",
"age": 25,
"isActive": True, # 可註解
"nickname": None
}
從以上例子看:
- 在 JSON 中,
true
、false
、null
是小寫,但在 Python 中,True
、False
、None
的首字母則是大寫。
3. Python 字典與 JSON 之間的轉換
在 Python 中,可以使用 json
模組 簡單地進行 JSON 與字典之間的轉換。
3.1 字典 → JSON 轉換
使用 json.dumps()
將 Python 字典轉換為 JSON 字串。
import json
person = {
"name": "Alice",
"age": 25,
"isActive": True,
"nickname": None
}
json_data = json.dumps(person)
print(json_data)
輸出:
{"name": "Alice", "age": 25, "isActive": true, "nickname": null}
3.2 JSON → 字典轉換
使用 json.loads()
可以將 JSON 字串轉換為 Python 字典。
import json
json_data = '{"name": "Alice", "age": 25, "isActive": true, "nickname": null}'
person = json.loads(json_data)
print(person)
輸出:
{'name': 'Alice', 'age': 25, 'isActive': True, 'nickname': None}
3.3 JSON 數據文件的保存與讀取
將 JSON 數據保存到文件
import json
data = {"name": "Alice", "age": 25, "isActive": True}
with open("data.json", "w") as file:
json.dump(data, file, indent=4) # 使用 indent 選項
使用 indent 選項的結果:
- 無 indent 保存:
{"name": "Alice","age":25,"isActive":true}
- 使用 indent=4 保存:
{ "name": "Alice", "age": 25, "isActive": true }
讀取 JSON 文件
import json
with open("data.json", "r") as file:
data = json.load(file)
print(data)
輸出:
{'name': 'Alice', 'age': 25, 'isActive': True}

結論
JSON 和 Python 字典擁有相似的結構,但在 用途 和 語法 上存在差異。JSON 是用於數據交換的標準格式,而 Python 字典則適合在 Python 代碼內部操作數據。使用 Python 的 json
模塊可以輕鬆實現 JSON 和字典之間的轉換,根據需要靈活使用!
額外提示
- 在保存 JSON 文件時使用
indent
選項可以生成便於人類閱讀的文件。處理數據文件時可讀性很重要,請務必加以利用。 - 在進行 JSON 和字典之間的轉換時,務必注意布林值與
null
/None
的差異。
目前沒有評論。