Python JSON 解析器和驗證器

了解如何在 Python 中讀取、驗證、修改和序列化 JSON。透過真實的例子掌握內建的json庫。

在編輯器中嘗試

概述

JSON(JavaScript 物件表示法)是網路上交換資料的標準格式。 Python 提供了一個名為「json」的強大內建模組,可以將 JSON 字串轉換為 Python 字典,反之亦然。

該模組公開了兩組主要的操作:用於直接處理 JSON 字串的“loads”和“dumps”,以及用於直接從檔案流寫入或讀取資料的“load”和“dump”。

使用 JSON 時,錯誤處理至關重要。如果字串語法被破壞,Python 會引發“json.JSONDecodeError”,這在使用公共 API 的有效負載時至關重要。

程式碼和執行輸出

示範 JSON 字串驗證、字典解析、修改和漂亮列印的腳本。

import json

raw_json = """
{
    "status": "success",
    "data": {
        "user_id": 9042,
        "username": "coder_xyz",
        "roles": ["admin", "developer"],
        "verified": true
    }
}
"""

try:
    # Parsing JSON string into Python dict
    data = json.loads(raw_json)
    print("--- JSON Decoded Successfully ---")
    print(f"Username: {data['data']['username']}")
    print(f"Is Admin: {'admin' in data['data']['roles']}")
    
    # Mutating Python dict
    data['data']['verified'] = False
    data['data']['last_login'] = "2026-05-25"
    
    # Serializing dict back to formatted JSON
    pretty_json = json.dumps(data, indent=4)
    print("\n--- Modified JSON String ---")
    print(pretty_json)
    
except json.JSONDecodeError as e:
    print(f"Invalid JSON Format: {e}")
端子輸出
--- JSON Decoded Successfully ---
Username: coder_xyz
Is Admin: True

--- Modified JSON String ---
{
    "status": "success",
    "data": {
        "user_id": 9042,
        "username": "coder_xyz",
        "roles": [
            "admin",
            "developer"
        ],
        "verified": false,
        "last_login": "2026-05-25"
    }
}

逐步實施

  • 讀取應用程式設定和憑證文件
  • 解析來自 REST API 端點的回應
  • 在桌面實用程式中儲存程式狀態或級別

常見問題解答

Python 中的 dump 和 dump 有什麼不同?

dumps 將物件序列化為 JSON 字串格式,而 dump 則將序列化的 JSON 流直接寫入可寫檔案物件。

Python 如何處理 JSON 空值?

Python 的 json 解碼器會自動將 JSON 的 null 對應到 None,將 true 和 false 對應到 True 和 False,將陣列對應到列表。

相關主題