如何循环修改JSON文件中food_image字段值并保存?
问题需求
我有一个JSON文件,需要通过循环为其中的food_image字段赋值,格式为food_image_0.jpg、food_image_1.jpg……food_image_{循环索引}.jpg。具体来说,要以food_image为前缀,添加循环索引后缀重写所有food_image字段的值,之后将修改后的内容保存为JSON文件。
原始JSON示例
{ "DATABASE": [ { "food_id": 0, "food_name": "Food Name ABC", "food_image": "imagesite/abc.jpg", // 目标值:food_image_0.jpg "food_kcal": "32", "units": [ { "amount": "15.0000", "calory": "32.4877372383" }, { "amount": "110.0000", "calory": "238.243406414" } ] }, { "food_id": 1, "food_name": "Food Name XYZ", "food_image": "imagesite/xyz.jpg", // 目标值:food_image_1.jpg "food_kcal": "32", "units": [ { "amount": "15.0000", "calory": "32.4877372383" }, { "amount": "110.0000", "calory": "238.243406414" } ] } ] }
现有Python代码
import json with open('json_file.json',encoding="utf8") as myfile: data=myfile.read() obj = json.loads(data) for idx, i in enumerate(obj['DATABASE']): print(i["food_image"])
期望结果JSON
{ "DATABASE": [ { "food_id": 0, "food_name": "Food Name ABC", "food_image": "food_image_0.jpg", "food_kcal": "32", "units": [ { "amount": "15.0000", "calory": "32.4877372383" }, { "amount": "110.0000", "calory": "238.243406414" } ] }, { "food_id": 1, "food_name": "Food Name XYZ", "food_image": "food_image_1.jpg", "food_kcal": "32", "units": [ { "amount": "15.0000", "calory": "32.4877372383" }, { "amount": "110.0000", "calory": "238.243406414" } ] } ] }
解决方案代码
import json # 读取JSON文件 with open('json_file.json', encoding="utf8") as myfile: obj = json.load(myfile) # 直接解析文件内容为Python对象,更简洁高效 # 遍历DATABASE列表,修改每个元素的food_image字段 for idx, item in enumerate(obj['DATABASE']): item["food_image"] = f"food_image_{idx}.jpg" # 将修改后的数据写入JSON文件 # 若要覆盖原文件,把文件名改成'json_file.json'即可 with open('modified_json_file.json', 'w', encoding="utf8") as outfile: json.dump(obj, outfile, ensure_ascii=False, indent=4)
关键说明
- 用
json.load()直接读取并解析文件,替代先读文本再json.loads()的写法,代码更简洁。 - 通过
enumerate获取循环索引,用f-string快速生成目标格式的字段值。 - 写入文件时,
indent=4让输出的JSON保持格式化,可读性强;ensure_ascii=False避免中文内容被转义(如果JSON里有中文的话)。 - 建议先保存为新文件验证结果,没问题再覆盖原文件,防止数据丢失。
内容的提问来源于stack exchange,提问作者user18504539
相关产品推荐
相关产品推荐

