Python 处理 JSON 的 4 种姿势:从 loads 到 pandas

2024-12-03

Python 标准库 json 够用,但数据量大或要上 DataFrame 时,选型不同性能差一个数量级。按场景选工具,比背 API 更重要。

1. 标准库 json.loads / dump

默认把 JSON object 转成 dict,array 转成 list;ensure_ascii=False 保留中文。

适合脚本、中小文件、与 Python 类型自然互操作。

import json
data = json.loads('{"name": "Alice", "tags": ["a", "b"]}')

2. orjson / ujson 加速

第三方库 C 实现,loads/dumps 更快;orjson 默认输出 bytes,支持 datetime、UUID 等选项(需配置)。

注意与标准库行为差异(如 NaN 处理),迁移时跑一遍测试。

3. pandas.read_json

表格型 JSON 数组直接进 DataFrame;lines=True 读 JSON Lines。

嵌套对象需 json_normalize 展平;orient 参数决定列布局。

import pandas as pd
df = pd.read_json("data.json")  #  array of objects 

4. pydantic / dataclass 建模

要校验 + 类型:Pydantic model_validate_json 一次完成 parse 与 schema。

适合 API 客户端与服务端,不只是「读进来」而是「读对」。

选型小结

小脚本 → json;性能瓶颈 → orjson;分析表格 → pandas;契约严格 → pydantic。