首先看一下我的JSON结构
{
"some_id": [
{
"embed": False,
"plain_msg": "Some text",
"embed_text": [
{
"title": "any title",
"body": "any bpdy text",
"color": "random color"
}
]
}
]
}
假设我有一个json文件filename.json,其中包含给定的json。现在我想更改embed的值,而不更改任何其他数据。
我有一个简单的密码
with open('filename.json', 'r') as f:
json_data = json.load(f)
json_data['some_id'] = 'Some string'
with open('filename.json', 'w') as f:
json.dump(json_data, f, indent=2)
但这段代码只能写在some_id内部,并将给定字符串的所有值重写为
{
"some_id": "Some string"
}
请帮帮我我怎么能这样做!我需要你的帮助
3条答案
按热度按时间aiqt4smr1#
json_data
变成了一个与JSON结构相同的字典,要访问“inner”元素,只需浏览字典结构。见下文评论。
jslywgbw2#
经过大量的测试和搜索,我得到了解决方案。
正确的代码是
它既不复制任何数据,也不删除任何现有的数据,只是改变。天哪,我终于得到了它。
9lowa7mx3#
如果我理解正确的话,你想编辑你已经拥有的文件('filename.json')上的值,而不是创建一个新文件,其中一个字段被编辑。
在这种情况下,您不需要嵌套的
with open...
结构。()方法。它将在“some_id”下,但该键包含一个包含一个元素的列表,因此您需要引用index 0。最后,index 0上的元素也是一个字典,其中存在“embed”键-这就是你想要改变的。试试这个: