【发布时间】:2021-08-28 06:53:37
【问题描述】:
我需要修改另一个程序正在使用的 JSON 文件的值。它看起来像这样:
[
{
"ENABLED": "True",
"NAME": "Cage",
"CODE": "3928273",
"COLOR": "Green"
}
]
这会导致我的脚本(如下)抛出错误。如果我从原始 JSON 文件中删除方括号,它会完美运行。但问题是使用它的程序需要方括号。
我需要将修改后的值写回文件,并且 JSON 文件在我完成写入后必须包含方括号。我当前的无效代码是:
import json
with open('myfile.json', 'r+') as f:
json_data = json.load(f)
json_data['NAME'] = "Nick"
f.seek(0)
json.dump(json_data, f, indent=4)
f.truncate()
我得到的错误是 "json_data['SYMBOL'] = "Nick" TypeError: list indices must be integers or slices, not str" 感谢您的帮助。谢谢。
【问题讨论】:
-
你必须在第 4 行尝试
json_data[0]['NAME'] = "Nick" -
您的字典在单元素列表中。
-
作为一般建议:一旦你调用了
json.load,你所拥有的只是一个普通的 Python 值,你可以使用 完全 i> 就好像您以 任何其他方式 获得了该数据,除了从 JSON 加载它。方括号表示一个 JSON 数组,它会变成一个 Python 列表。如果您还没有预料到,那么您可能真的需要更好地理解 JSON 格式本身。 (顺便说一句:square标签用于无关的内容。当您在帖子中添加标签时,请阅读弹出的说明。)
标签: python json square-bracket