迭代.json文件并更改属性值

时间:2015-08-16 17:59:30

标签: python json

我试图用一个小脚本迭代一个.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)

我在这里做错了什么?我没有收到任何错误。价值观没有改变。

1 个答案:

答案 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)