如何在Python中格式化JSON并创建格式规范的JSON文件
正确实现Python格式化JSON并生成文件的方法
你的问题出在错误地把换行符\n加到了字典的键里——JSON的键是字符串,这么做只会让键本身包含\n字符,根本起不到格式化换行的作用,而且原代码里的语法还存在错误(比如+'\n'的位置不对,会直接导致语法报错)。
正确的做法是:先正常构建符合目标结构的Python字典,再用json模块的内置方法实现格式化输出,具体步骤如下:
步骤1:正确构建字典结构
按照目标JSON的层级,把数据正常存入Python字典,不要在键或值里加任何换行符:
# 假设name和items是已定义好的变量(items为包含item、quantity、price()属性的对象列表) order = {"name": name, "items": {}} a = 1 for i in items: # 逐个添加单个商品的三个键值对到items字典中 order["items"][f'item {a}'] = i.item order["items"][f'quantity of item {a}'] = i.quantity order["items"][f'price of item{a}'] = i.price() a += 1
步骤2:用json模块格式化并写入文件
Python自带的json模块提供了dump()方法,可直接将字典写入文件,同时通过indent参数指定缩进空格数,自动实现换行和层级格式化:
import json # 以写入模式打开文件,指定编码避免中文乱码 with open("order.json", "w", encoding="utf-8") as f: # indent=4表示每个层级缩进4个空格,ensure_ascii=False支持中文(按需启用) json.dump(order, f, indent=4, ensure_ascii=False)
如果只是需要获取格式化后的JSON字符串,可使用json.dumps()方法:
formatted_json = json.dumps(order, indent=4, ensure_ascii=False) print(formatted_json)
这样生成的JSON文件就会和你给出的示例结构一致,自动带有规范的换行和缩进,完全不需要手动添加\n。
内容的提问来源于stack exchange,提问作者Aryan Vallabhbhai
相关产品推荐
相关产品推荐

