I am creating a JSON file from a SQL query. But I could not create truly. The problem is there is a “items” object and it has products. But mine create products directly not in “items” objects.
The Code.
import json
import collections
import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("SELECT barcode,listPrice,salePrice FROM productstable")
rows = cursor.fetchall()
objects_list = []
for row in rows:
d = collections.OrderedDict()
d["barcode"] = row[0]
d["listPrice"] = row[1]
d["salePrice"] = row[2]
objects_list.append(d)
j = json.dumps(objects_list,indent=4)
with open("products.json", "w") as f:
f.write(j)
conn.close()
yields the following JSON object as a result
[
{
"barcode": "1952084972279",
"listPrice": 100.5,
"salePrice": 99
},
{
"barcode": "1952084972280",
"listPrice": 115.3,
"salePrice": 100
}
]
while the desired one should be as follows
{
"items": [
{
"barcode": "1952084972279",
"salePrice": 100.5,
"listPrice": 99
},
{
"barcode": "1952084972280",
"salePrice": 115.3,
"listPrice": 100
}
]
}
Advertisement
Answer
define objects_list as a dictionary instead of a list.
objects_list = {}
objects_list["items"] = []
And append to the objects_list["items"].
objects_list["items"].append(d)