使用Python输入JSON输入文件,编辑JSON对象,与新文件相同

jdgnovmf  于 2023-01-14  发布在  Python
关注(0)|答案(1)|浏览(111)

首先,这是我的JSON文件结构

[{
"title": "Reference Addition",
"ref_date": 20200110,
"country": "ASIA",
"ref_internal": "1",
"ref_external": "1"
}]

我在Python代码中成功加载了文件。我想更改country的值并将其保存到一个新文件。

with open('myfile.json', 'r') as f:
 json_data = json.load(f)
json_data['country'] = 'AFRICA'

with open('myfile.json', 'w') as f:
json.dump(json_data, f, indent=2)

但不幸的是我一直

AttributeError: module 'json' has no attribute 'tree'

我在网上搜索了一些东西,之后我设法解决了该错误,但现在遇到此错误

import json
myfile = ('JSON\TRADE.json')

with open (myfile, 'r') as myfile: json_data = json.load(myfile) json_data['country'] = 'AFRICA'
 json.tree.dump(json_data, indent=4)
with open(myfile, 'w') as f: json.dump(json_data, f, indent=4)

现在具有完整追溯的错误是
追溯(最近调用最后调用):

File "c:\AUTOMATION\Data Creation\JSON\EDIT.py", line 7, in json_data['country'] = 'AFRICA' TypeError: list indices must be integers or slices, not str PS C:\AUTOMATION\Data Creation>

抱歉,如果任何细节是不正确的,但请让我知道,所以我可以提供

anauzrmj

anauzrmj1#

问题出在JSON文件结构上。JSON文件看起来像是一个对象数组,每个对象都包含您列出的属性。为了访问country属性,您需要首先访问数组中的对象。您可以通过指定对象的索引来完成此操作,如下所示:

with open(myfile, 'r') as f:
    json_data = json.load(f)
    json_data[0]['country'] = 'AFRICA'

with open(myfile, 'w') as f:
    json.dump(json_data, f, indent=4)

这会将数组中第一个对象的country属性值更改为“AFRICA”。
此外,在您的代码中,不需要使用json.tree,只需要json.dump就可以将数据保存到文件中。

相关问题