python怎么格式化json

python怎么格式化json
最新回答
雨后初见彩虹

2022-11-12 01:38:49

在Python中,格式化JSON数据可以通过内置的json模块或第三方库(如prettytable和tabulate)实现。以下是具体方法和示例:

1. 使用 json 模块

Python内置的json模块提供了dump()和dumps()函数,支持通过indent参数控制缩进,使输出更易读。

示例代码import jsondata = {'name': 'John Doe', 'age': 30, 'skills': ['Python', 'JSON']}# 格式化为字符串(带缩进)json_string = json.dumps(data, indent=4)print(json_string)# 写入文件(带缩进)with open('data.json', 'w') as f: json.dump(data, f, indent=4)关键参数
  • indent:指定缩进空格数(如indent=4),若为None则输出紧凑格式。
  • sort_keys:按字母顺序排序键(如sort_keys=True)。
2. 使用 prettytable 模块

将JSON数据转换为表格形式,适合展示结构化数据。

示例代码import jsonfrom prettytable import PrettyTabledata = {'name': 'John Doe', 'age': 30, 'skills': ['Python', 'JSON']}json_string = json.dumps(data)# 从JSON字符串创建表格table = PrettyTable()table.field_names = ["Key", "Value"]for key, value in json.loads(json_string).items(): table.add_row([key, value])print(table)输出效果+---------+-------------------+| Key | Value |+---------+-------------------+| name | John Doe || age | 30 || skills | ['Python', 'JSON']|+---------+-------------------+3. 使用 tabulate 模块

将JSON数据转换为多种格式的表格(如Markdown、HTML等)。

示例代码import jsonfrom tabulate import tabulatedata = {'name': 'John Doe', 'age': 30, 'skills': ['Python', 'JSON']}json_string = json.dumps(data)# 转换为表格字符串table_data = [[k, v] for k, v in json.loads(json_string).items()]print(tabulate(table_data, headers=["Key", "Value"], tablefmt="grid"))输出效果+---------+-------------------+| Key | Value |+---------+-------------------+| name | John Doe || age | 30 || skills | ['Python', 'JSON']|+---------+-------------------+支持的格式

通过tablefmt参数指定格式(如"plain"、"html"、"latex")。

4. 高级技巧
  • 验证JSON结构:使用jsonschema库验证数据是否符合预定义模式。from jsonschema import validateschema = {"type": "object", "properties": {"name": {"type": "string"}}}validate(instance=data, schema=schema)
  • 处理复杂嵌套:递归遍历JSON对象,自定义格式化逻辑。
总结
  • 简单格式化:优先使用json.dumps(data, indent=4)。
  • 表格输出:选择prettytable或tabulate根据需求生成可视化表格。
  • 验证数据:结合jsonschema确保数据正确性。

根据场景选择合适的方法,既能提升代码可读性,也便于调试和展示数据。