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,将数组映射到列表。

相关主题