我试图用一个小脚本迭代一个.json文件来查找名为' model'的属性。并在每个对象上更改它的值。 (它是来自Django的db-dump)。
import codecs, json
data = ""
with codecs.open("dump2.json", 'r', 'utf8') as data_file:
data = json.load(data_file)
for i in data:
for key in i:
if key[0] == 'model':
key[1] = "app.model" #not working
with codecs.open('dump2.json', 'w', 'utf8') as f:
json.dump(data, f)
我在这里做错了什么?我没有收到任何错误。价值观没有改变。
答案 0 :(得分:1)
基于我在web上找到的一些随机文档。我假设你有这样一个json结构:
[
{
"pk": 1,
"model": "auth.user",
"fields":{
"username": "test1"
}
},{
"pk": 2,
"model": "auth.user",
"fields":{
"username": "test2"
}
}
]
以json为例,当代码执行时,它会在for i in data:
行上的json键上正确迭代。但是在第二个循环for key in i:
上,您正在迭代一个字符串(" model" string)。因此,在这种情况下,key[0]
为'm'
,key[1]
为'o'
,依此类推......
你应该这样试试:
import codecs, json
data = ""
with codecs.open("dump2.json", 'r', 'utf8') as data_file:
data = json.load(data_file)
for i in data:
for key in i:
if key=="model":
i[key] = "app.model"
with codecs.open('dump2.json', 'w', 'utf8') as f:
json.dump(data, f)