Append JSON's and write to file - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Append JSON's and write to file (/thread-26790.html) |
Append JSON's and write to file - faqsap - May-13-2020 I have a Sample JSON record in a file as below { "name":"John", "age":30, "car":"BMW" } I want to create more JSON records out of it and i want to minimize the i/o by not writing to the file system everytime i create sample record, the code below is to change the age using parameters and hold the JSON records in a list and write to the file system when i am done generating the records. # Read the sample file with open("C:/myfile.json") as file: originalJSON = json.load(file) # How many sample Records? numberOfRecords = 4 i = 1 myOutput = [] # initializing a dummy list to append my json's while (i <= numberOfRecords): # Change the age originalJSON["age"] = i myOutput.append(originalJSON) i += 1 # After appending all the JSON's to the list i want to write the JSON array to a file with open("C:/multiplerecords.json", 'w') as multipleJsons: json.dump(myOutput, multipleJsons)The output looks like [{ "name":"John", "age":4, "car":"BMW" } { "name":"John", "age":4, "car":"BMW" } { "name":"John", "age":4, "car":"BMW" } { "name":"John", "age":4, "car":"BMW" }] $$$ the issue i see is, when i write myOutput list it generates 4 records in it but all of them are duplicates, the last json that was produced is written to the whole list. Instead i am looking for something like below [{ "name":"John", "age":1, "car":"BMW" } { "name":"John", "age":2, "car":"BMW" } { "name":"John", "age":3, "car":"BMW" } { "name":"John", "age":4, "car":"BMW" }] ################################################################################################################### RE: Append JSON's and write to file - bowlofred - May-14-2020 originalJSON is a python object.On line 10 you modify the object. On line 11, you append the object to your list. But none of these operations makes a copy. All 4 items in the list are the same object. Probably you want to make a copy of it at the time you append. myOutput.append(copy.copy(originalJSON)) RE: Append JSON's and write to file - faqsap - May-14-2020 Thank you for the reply is copy.copy a valid command? I tried it and python spit out an error. RE: Append JSON's and write to file - bowlofred - May-15-2020 Generally if you see a command in two parts like that, it indicates that it's part of a library. It's a standard library in this case, but you'll still need to import it. import copywithin your script. https://docs.python.org/3/library/copy.html RE: Append JSON's and write to file - faqsap - May-15-2020 Thank you for that explanation, it really helped. I ended up using the deep copy function. Appreciate your help. |