简而言之:在 Python 中解析 JSON,请使用内置的 json 模块:字符串或字节用 json.loads(),文件用 json.load(),HTTP 响应用 Requests 的 response.json()。请分别检查 HTTP 状态码和 JSON 有效性,因为 200 响应也可能是 HTML。本指南还介绍解码错误、嵌套访问、校验、大文件以及隐藏在网页中的 JSON。
Python 的内置 json 模块用于解析 JSON。对于 json.loads() 处理字符串或字节数组, json.load() 用于字符串或字节数组,以及 Requests 的 response.json() 用于处理 HTTP 响应。本指南涵盖了解码错误、安全的嵌套访问、有效性验证、大文件处理、数值精度以及网页中嵌入的 JSON。
关键要点
- 建议优先使用
json.loads用于字符串/字节,json.load;打开文件时应使用 UTF-8(或utf-8-sig当存在 BOM 时)。 - 将 HTTP 状态和 JSON 有效性视为独立的检查:200 响应仍可能是 HTML。
- 使用
.get()链或一个小型dig()辅助函数来处理杂乱的嵌套数据;解析后使用 Pydantic 或 JSON Schema 进行验证。 - 使用 ijson 流式处理大型数组,将抓取结果作为 JSON Lines 追加,并在自己的有效负载上测量 orjson 的性能。
- 当 HTML 布局频繁变化时,优先使用页面中嵌入的 JSON(JSON-LD、
__NEXT_DATA__) 或爬取 API 的结构化字段,而非易受 HTML 布局频繁变化影响的脆弱 CSS 选择器。




