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)
相关推荐
天天进步201519 小时前
Python全栈项目:实时数据处理平台
开发语言·python
Tipriest_19 小时前
Python中is关键字详细说明,比较的是地址还是值
开发语言·python
sheji341619 小时前
【开题答辩全过程】以 基于Python的餐饮统计系统的设计和实 现为例,包含答辩的问题和答案
开发语言·python
Byron070720 小时前
从 0 到 1 搭建 Vue 前端工程化体系:提效、提质、降本实战落地
前端·javascript·vue.js
哆啦code梦20 小时前
前端存储三剑客:localStorage、sessionStorage与Cookie解析
前端·前端存储
遨游xyz20 小时前
排序-快速排序
开发语言·python·排序算法
徐小夕@趣谈前端20 小时前
Web文档的“Office时刻“:jitword共建版2.0发布!让浏览器变成本地生产力
前端·数据结构·vue.js·算法·开源·编辑器·es6
iFeng的小屋20 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
m0_5613596720 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
LeonDL16820 小时前
基于YOLO11深度学习的衣物识别系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·pyqt5·yolo数据集·yolo11数据集·yolo11深度学习·衣物识别系统