2016-11-22 41 views
0

我正在導入JSON文件並將其用作模板,我在其中修改了一些屬性。JSON作爲模板:不清除

with open('example.json') as data_file: 
    j = json.load(data_file) 
... # and within a loop: 
    with open('output.json', 'w') as outfile: 
     activejson = j # I would like this to reset or pull fresh from j 
     ... # modify properties here 
     json.dump(activejson, outfile, indent=4) 

activejson不拉模板j通過循環的每個迭代新鮮。 (我可以從activejson的「修改屬性這裏」區域拉動舊的修改後的值)。我的理解是,activejson指向j而不是作爲副本,但activejson = j.copy()似乎沒有做到這一點要麼,也不是activejson = {}。什麼是正確的命令/方法來清空這個變量,並在每次迭代後拉新模板?什麼是最有效的方法來處理這個問題?

+0

'j.copy()'只做一個淺拷貝,所以你仍然會遇到嵌套對象的問題。請參見[copy.deepcopy](https://docs.python.org/3/library/copy.html#copy.deepcopy) –

回答

3

由於JSON通常構造爲嵌套對象,因此您需要使用copy.deepcopy

activejson = copy.deepcopy(j)