2016-11-22 4 views
0

Ich importiere eine JSON-Datei und verwende sie als Vorlage, über die ich einige der Eigenschaften modifiziere.JSON als Vorlage: löscht nicht

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 zieht nicht die Vorlage j frisch durch jede Iteration der Schleife. (Ich bin in der Lage, alte, modifizierte Werte aus früheren Iterationen in activejson in den Bereich "Eigenschaften hier ändern" zu ziehen.) Meines Wissens nach zeigt activejson auf j anstatt als Kopie, aber activejson = j.copy() scheint nicht den Trick zu tun entweder noch activejson = {}. Was ist der richtige Befehl/Weg, um diese Variable zu leeren und die Vorlage nach jeder Iteration neu zu laden? Was ist der effizienteste Weg, damit umzugehen?

+0

'j.copy()' macht nur eine flache Kopie, so dass Sie immer noch Probleme mit verschachtelten Objekten bekommen. Siehe [copy.deepcopy] (https://docs.python.org/3/library/copy.html#copy.deepcopy) –

Antwort

3

Da JSON normalerweise als verschachtelte Objekte strukturiert ist, müssten Sie copy.deepcopy verwenden.

activejson = copy.deepcopy(j)