I'm trying to create a function that would append data into json file follow with same indentation which is already exist. I created json file as given below.
{
"TableA":
[
{"ID": "10001", "Name": "Chandan","Age": "29"},
{"ID": "10002", "Name": "Rajesh", "Age": "24"},
{"ID": "10003", "Name": "Raju", "Age": "25"}
]
}
Python Code:
import json
# Write Data on Json file
a_dict = {"ID": "10005", "Name": "Manoj","Age": "31"}
try:
with open('TableA.json', 'a') as f:
json_obj = json.dump(a_dict, json.load(f),ensure_ascii=False)
f.write(json_obj)
f.close()
except IOError as io:
print "ERROR: ", io
# Read data from Json File
with open('TableA.json') as data_file:
data = json.load(data_file)
for i in data["TableA"]:
print "ID: \t", i["ID"]
print "Name: \t", i["Name"]
print "Age: \t", i["Age"]
2 Answers 2
I made some changes for get proper output. If someone help me to optimize the code then please help for this.
import json
# Write Data
a_dict = {}
try:
with open('TableA.json') as data_file:
data = json.load(data_file)
temp_list = []
for dicObj in data["TableA"]:
temp_list.append(dicObj)
temp_list.append({"ID": "10006", "Name": "Ritesh","Age": "21"})
data["TableA"] = temp_list
a_dict["TableA"] = data["TableA"]
with open('TableA.json','w') as f:
f.write(json.dumps(a_dict, indent=4, sort_keys=True, encoding="utf-8"))
except IOError as io:
print "ERROR: ", io
# Read data from Json File
with open('TableA.json') as data_file:
data = json.load(data_file)
for i in data["TableA"]:
print "ID: \t", i["ID"]
print "Name: \t", i["Name"]
print "Age: \t", i["Age"]
Output:
{
"TableA": [
{
"Age": "29",
"ID": "10001",
"Name": "Chandan"
},
{
"Age": "24",
"ID": "10002",
"Name": "Rajesh"
},
{
"Age": "25",
"ID": "10003",
"Name": "Raju"
},
{
"Age": "31",
"ID": "10005",
"Name": "Manoj"
},
{
"Age": "21",
"ID": "10004",
"Name": "Ritesh"
},
{
"Age": "21",
"ID": "10006",
"Name": "Ritesh"
}
]
}
Sign up to request clarification or add additional context in comments.
Comments
Instead of appending only one line, you can also choose to write the whole json again.
with open('TableA.json') as data_file:
data = json.load(data_file)
a_dict = {"ID": "10005", "Name": "Manoj","Age": "31"}
new_data = data["TableA"].append(a_dict)
with open('TableA.json','w') as f:
f.write(json.dumps(new_data, indent=4, sort_keys=True))
answered May 9, 2017 at 13:27
iamkhush
2,5923 gold badges20 silver badges34 bronze badges
1 Comment
cSharma
#Thanks! #iamkhush, your code is useful to get my proper output but I made changes little bit to make it more clear.
lang-py
python, (2) provide the relevant piece of code, and (3) describe the particular problem you bump into. Also provide an example with input and expected output.