Я использую API для получения результатов в формате JSON, а затем конвертирую в CSV. Однако в результатах я вижу, что в некоторых записях отсутствуют ключи. В результате значения CSV смещены в неправильные столбцы
Я запустил свой скрипт, а также запустил API в Postman, и вывод JSON такой же. Я использовал https://json -csv.com / для преобразования JSON в CSV и сравнил его с моим выводом. Вывод https://json -csv.com / показывает, что данные находятся в правильных столбцах, что наводит меня на мысль, что на заднем плане есть некоторый код, который обнаруживает отсутствующий ключ / значение и заполняет его нулевое значение.
import json
import requests
import csv
def get_data():
group_id = 9039
api_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
api_url = 'https://api.samsara.com/v1'
endpoint_url = api_url + '/fleet/drivers'
my_params = {"access_token": api_token}
my_data = {"groupId": group_id}
resp = requests.post(url = endpoint_url, params = my_params, json = my_data)
array = resp.json()
text = json.dumps(array)
return text
def write_file(filename, text):
dataset = json.loads(text)
drivers = dataset['drivers']
csvFile = open(filename,'w')
csvwriter = csv.writer(csvFile)
# write header
if len(drivers) > 0:
keys = drivers[0].keys()
csvwriter.writerow(keys)
# write data
for line in drivers:
csvwriter.writerow(line.values())
csvFile.close()
text = get_data()
write_file('drivers.csv', text)
Из вывода JSON приведен частичный результат.
{
"drivers": [
{
"id": 158830,
"groupId": 9039,
"vehicleId": 212014918234731,
"currentVehicleId": 212014918431705,
"username": "rdoherty",
},
{
"id": 134808,
"groupId": 9039,
"vehicleId": null,
"username": "sbermingham",
}
]
}
Обратите внимание, что вторая запись не имеет ключа "currentVehicleId": значение. В результате при преобразовании в CSV, если отсутствует значение, все остальные значения перемещаются в столбец слева от того места, где он должен быть.
id groupId vehicleId currentVehicleId username
158830 9039 2.12015E+14 2.12015E+14 rdoherty
134808 9039 null sbermingham
Я хочу, чтобы преобразование CSV гарантировало замену всех пропущенных значений на ноль.