I would like to use python to merge multiple JSON objects with duplicate or more fields with different data into one object by adding additional fields to the merged object. In this example. all of the fields have matching data except for the "audience type" field.
{
"Person Username": "bob@company.com",
"Person Status": "Active",
"Person E-mail": "bob@company.com",
"Person First Name": "Ann",
"Person Last Name": "Smith",
"Person Audience Type": "General Managers",
"Person Organization Name": "mycompany",
"Person Organization Number": "US3058",
},
{
"Person Username": "bob@company.com",
"Person Status": "Active",
"Person E-mail": "bob@company.com",
"Person First Name": "Ann",
"Person Last Name": "Smith",
"Person Audience Type": "Managers",
"Person Organization Name": "mycompany",
"Person Organization Number": "US3058",
},
{
"Person Username": "bob@company.com",
"Person Status": "Active",
"Person E-mail": "bob@company.com",
"Person First Name": "Ann",
"Person Last Name": "Smith",
"Person Audience Type": "Owners",
"Person Organization Name": "mycompany",
"Person Organization Number": "US3058",
},
I would like this to look like:
{
"Person Username": "bob@company.com",
"Person Status": "Active",
"Person E-mail": "bob@company.com",
"Person First Name": "Ann",
"Person Last Name": "Smith",
"Person Audience Type1": "General Managers",
"Person Audience Type2": "Managers",
"Person Audience Type3": "Owners",
"Person Organization Name": "mycompany",
"Person Organization Number": "US3058",
},
My code:
import csv
import json
def csv_to_json(csvFilePath, jsonFilePath):
jsonArray = []
#read csv file
with open(csvFilePath, encoding='utf-8') as csvf:
#load csv file data using csv library's dictionary reader
csvReader = csv.DictReader(csvf)
#convert each csv row into python dict
for row in csvReader:
#add this python dict to json array
jsonArray.append(row)
#convert python jsonArray to JSON String and write to file
with open(jsonFilePath, 'w', encoding='utf-8') as jsonf:
jsonString = json.dumps(jsonArray, indent=4)
jsonf.write(jsonString)
csvFilePath = r'data.csv'
jsonFilePath = r'data.json'
csv_to_json(csvFilePath, jsonFilePath)