You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何循环修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:46:06