跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Python对JSON格式化的多种方法

目录引言

一、基础格式化方法

1. 使用标准库json模块

2. 紧凑格式化

二、高级格式化技巧

1. 自定义格式处理器

2. 处理复杂数据结构

三、文件操作

1. 写入格式化JSON文件

2. 读取并格式化

四、命令行工具

五、第三方库推荐

六、常见问题解决

七、格式化验证

总结引言JSON作为Web开发中最常用的数据交换格式,其可读性和格式规范性对开发调试至关重要。本文将详细介绍Python中格式化JSON的多种方法,帮助开发者高效处理JSON数据。

一、基础格式化方法

1. 使用标准库json模块

import json

data = {"name": "张三", "age": 25, "skills": ["Python", "Java"]}

# 基本格式化formatted_json = json.dumps(data, indent=4, ensure_ascii=False) print(formatted_json)

# 输出结果:"""{"name": "张三","age": 25,"skills": ["Python","Java"]}"""

关键参数说明:

indent:缩进空格数(推荐2或4)

ensure_ascii:设为False可显示中文sort_keys:设为True可按键名排序

2. 紧凑格式化

compact_json = json.dumps(data, separators=(',', ':'))# 输出:{"name":"张三","age":25,"skills":["Python","Java"]}

二、高级格式化技巧

1. 自定义格式处理器

def pretty_json(obj):return json.dumps(obj,indent=2,sort_keys=True,ensure_ascii=False,separators=(',', ': '))

print(pretty_json(data))

2. 处理复杂数据结构

from datetime import datetime

complex_data = {"timestamp": datetime.now(),"nested": {"a": 1, "b": [1, 2, 3]}}

# 自定义序列化def default_serializer(obj):if isinstance(obj, datetime):return obj.isoformat() raise TypeError("Type not serializable")

print(json.dumps(complex_data, default=default_serializer, indent=2))

三、文件操作

1. 写入格式化JSON文件

with open('data.json', 'w', encoding='utf-8') as f:json.dump(data, f, indent=4, ensure_ascii=False)

2. 读取并格式化

with open('data.json', 'r', encoding='utf-8') as f:loaded_data = json.load(f) print(json.dumps(loaded_data, indent=2))

四、命令行工具

Python自带JSON格式化工具:# 格式化文件python -m json.tool input.json output.json

# 管道操作echo '{"name":"李四","age":30}' | python -m json.tool

五、第三方库推荐

json5(支持注释等扩展语法)

import json5

data = json5.loads("""{// 注释name: "王五",age: 28}""")demjson(容错性更强)

import demjson

# 自动修复格式错误data = demjson.decode("{'key': 'value',}")

六、常见问题解决

中文乱码问题# 错误写法json.dumps(data) # 中文会变成Unicode转义

# 正确写法json.dumps(data, ensure_ascii=False)日期格式处理from datetime import datetime

def datetime_handler(x):if isinstance(x, datetime):return x.isoformat() raise TypeError("Unknown type")

json.dumps(data, default=datetime_handler)大数据量格式化优化# 使用ijson进行流式处理import ijson

with open('large.json', 'rb') as f:for item in ijson.items(f, 'item'):print(json.dumps(item, indent=2))

七、格式化验证

def validate_json(json_str):try:json.loads(json_str) return True except json.JSONDecodeError as e:print(f"格式错误:{str(e)}") return False总结Python提供了多种JSON格式化方案:基础需求使用标准库json模块复杂场景选择json5或demjson大数据量使用流式处理库ijson命令行操作使用python -m json.tool根据具体需求选择合适的方法,合理设置indent、sort_keys等参数,可以显著提升JSON数据的可读性和可维护性。建议始终设置ensure_ascii=False以获得更好的中文显示效果。

以上就是Python对JSON格式化的多种方法的详细内容,更多关于Python对JSON格式化的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:python实现将JSON文件中的数据格式化处理Python 如何保存json文件并格式化Python json格式化打印实现过程解析Python 格式化打印json数据方法(展开状态) python自动格式化json文件的方法

相关文章