I am converting .csv to JSON but the strings are not in a array form, and I need them to be inside an array.
Code I use to convert .csv to JSON:
def import_passwords(self):
options = QFileDialog.Options()
fileName, _ = QFileDialog.getOpenFileName(self,"Passwords", "Passwords","Excel File (*.csv)", options=options)
if fileName:
print(fileName)
csvfile = open(fileName, 'r')
jsonfile = open(password_dir + 'passwords.json', 'w')
fieldnames = ("site name","username","password")
reader = csv.DictReader(csvfile, fieldnames)
out = json.dumps([row for row in reader])
# out = out.replace("\\", '')
# jsonfile.write(out)
# with open(password_dir + 'passwords.json', mode='w+', encoding='utf-8') as file:
# json.dump(out, file)
# with open(password_dir + 'passwords.json') as file:
passwords_json = json.loads(out)
# sort json file
sorted_obj = sorted(passwords_json, key=lambda x : x['site name'], reverse=False)
# Write to passwords file
with open(password_dir + 'passwords.json', mode='w+', encoding='utf-8') as file:
json.dump(sorted_obj, file, ensure_ascii=True, indent=4, sort_keys=True, separators=(',', ': '))
I have no idea how I would convert them in a efficient way.
What I get:
[
{
"password": "asd",
"site name": "asd",
"username": "asd"
},
{
"password": "asd",
"site name": "asdasd",
"username": "asd"
},
{
"password": "asd",
"site name": "asdasdasd",
"username": "asd"
}
]
What I want:
[
{
"password": ["asd"],
"site name": ["asd"],
"username": ["asd"]
},
{
"password": ["asd"],
"site name": ["asdasd"],
"username": ["asd"]
},
{
"password": ["asd"],
"site name": ["asdasdasd"],
"username": ["asd"]
}
]
I get the as string, and I want array.