📚 目录
- JSON 文件简介
- 读取 JSON 数据
- 保存 DataFrame 为 JSON
- JSON 格式结构支持
- 常见错误与调试方法
- 参考资料
- 出站链接
1. JSON 文件简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于 Web API、配置文件、日志存储等。Pandas 提供了便捷的接口来解析、读取和写入 JSON 格式数据。
2. 读取 JSON 数据
使用 pd.read_json()
可将 JSON 文件或字符串读取为 DataFrame:
import pandas as pd
df = pd.read_json('data.json')
print(df.head())
✅ 读取 JSON 字符串:
json_str = '''
[
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30}
]
'''
import io
df = pd.read_json(io.StringIO(json_str))
3. 保存 DataFrame 为 JSON
使用 DataFrame.to_json()
保存为 JSON 格式:
df.to_json('output.json', orient='records', lines=True)
常用参数:
参数 | 说明 |
---|---|
orient | 指定转换方向(如 records 、split 、index 、columns 、values ) |
lines | 每行一个 JSON 对象(流式写入) |
force_ascii | 默认为 True,建议设置为 False 保留中文字符 |
示例(保留中文):
df.to_json('output.json', orient='records', force_ascii=False)
4. JSON 格式结构支持
Pandas 支持扁平化的 JSON,以及嵌套结构(需借助 json_normalize
):
✅ 扁平 JSON 示例:
[
{"id": 1, "name": "Alice", "age": 25},
{"id": 2, "name": "Bob", "age": 30}
]
✅ 嵌套 JSON 示例(用 json_normalize
展开):
from pandas import json_normalize
import json
data = '''
[
{"id": 1, "profile": {"name": "Alice", "age": 25}},
{"id": 2, "profile": {"name": "Bob", "age": 30}}
]
'''
parsed = json.loads(data)
df = json_normalize(parsed, record_path=None)
5. 常见错误与调试方法
问题 | 解决方案 |
---|---|
ValueError: Expected object or value | JSON 字符串未正确解析,需检查格式或使用 io.StringIO() |
Unicode 编码混乱 | 设置 force_ascii=False |
JSON 文件结构嵌套 | 使用 json_normalize() 展开嵌套字段 |
📖 参考资料
- Pandas JSON 读写官方文档
- Real Python – Working with JSON in Python
- Python 标准库文档(
json
模块)
发表回复