python:输出JSON

复制代码
import json

data = [{
    'name': 'Bob',
    'gender': 'male',
    'birthday': '1992-10-18'
}]
with open('data.json', 'w', encoding='utf-8') as file:
    file.write(json.dumps(data))

运行效果如下:

关键知识点:

json.dumps用法

json.dumps() 是 Python 标准库 json 模块中的一个函数,用于将 Python 对象 (如字典、列表等)序列化为 JSON 格式的字符串。这个过程也叫"编码"(encoding)。


🔧 基本语法:

复制代码
json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
           allow_nan=True, cls=None, indent=None, separators=None,
           default=None, sort_keys=False, **kw)

最常用的是前几个参数,我们重点看:

参数 说明
obj 要转换的 Python 对象(如 dict、list、str、int 等)
indent 格式化输出时的缩进空格数(例如 indent=2),便于阅读
ensure_ascii 默认为 True,非 ASCII 字符(如中文)会被转义;设为 False 可保留原字符
sort_keys 是否对字典的键进行排序(默认 False
separators 控制分隔符,如 (',', ':') 可减少输出体积

✅ 示例 1:基本用法

复制代码
import json

data = {'name': '张三', 'age': 25}
json_str = json.dumps(data)
print(json_str)
# 输出: {"name": "\u5f20\u4e09", "age": 25}  (中文被转义)

✅ 示例 2:保留中文(不转义)

复制代码
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
# 输出: {"name": "张三", "age": 25}

✅ 示例 3:格式化输出(带缩进)

复制代码
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

输出:

复制代码
{
  "name": "张三",
  "age": 25
}

✅ 示例 4:写入文件(配合 open

虽然你可以用 file.write(json.dumps(data)),但更推荐使用 json.dump() 直接写入:

复制代码
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

注意区别:

  • json.dumps() → 返回 字符串
  • json.dump() → 直接将对象 写入文件

⚠️ 支持的数据类型

json.dumps() 只能处理以下 Python 类型:

  • dict → JSON object
  • list, tuple → JSON array
  • str → JSON string
  • int, float → JSON number
  • True / Falsetrue / false
  • Nonenull

如果包含 datetime、自定义类等,会报错,需通过 default 参数处理。


✅ 处理不支持的类型(如 datetime)

复制代码
from datetime import datetime
import json

def serialize(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError("Type not serializable")

data = {'time': datetime.now()}
json_str = json.dumps(data, default=serialize, ensure_ascii=False)
print(json_str)
相关推荐
枫叶林FYL3 分钟前
【Python高级工程与架构实战】项目四 现代ETL编排平台:Airflow + dbt + Snowflake 企业级数据管道架构与实现
人工智能·python·架构·etl
源码之屋4 分钟前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计
Hello--_--World6 分钟前
VUE:逻辑复用
前端·javascript·vue.js
捧月华如10 分钟前
React vs Vue vs Angular:三大前端框架深度对比
python·github
AI_Claude_code11 分钟前
安全与合规核心:匿名化、日志策略与法律风险规避
网络·爬虫·python·tcp/ip·安全·http·网络爬虫
杜子不疼.11 分钟前
用 Python 实现 RAG:从文档加载到语义检索全流程
开发语言·人工智能·python
Eiceblue13 分钟前
Python 如何实现 Excel 数据分列?一列拆分为多列
python·microsoft·excel
不是株14 分钟前
FastAPI
python·fastapi
q_354888515315 分钟前
计算机毕业设计:Python智慧水文监测与流量预测系统 Flask框架 多元线性回归 数据分析 可视化 水网 流量预测 水位预测(建议收藏)✅
大数据·python·信息可视化·数据挖掘·flask·线性回归·课程设计