Извините, что задаю такой простой вопрос, но я немного сложил. Есть 3 задания:
а) Получить данные из API (я сделал),
б) Разобрать данные ответа и сохранить ответ в файл JSON (я так и сделал, выглядит так: "{\n \"Count\": 93,\n \"Message\": \"Response returned successfully\",\n \"SearchCriteria\": null,\n \"Results\": [\n {\n \"Country\": \"UNITED STATES (USA)\" )......
c) Преобразуйте сохраненные данные JSON в целевые данные JSON в формате, указанном ниже:
[
{
"Country":"UNITED STATES (USA)",
"Mfr_CommonName":"Tesla",
"Mfr_ID":955,
"Mfr_Name":"TESLA, INC.",
"IsPrimary":true,
"Name":"Passenger Car"
},
{
"Country":"UNITED STATES (USA)",
"Mfr_CommonName":"Tesla",
"Mfr_ID":955,
"Mfr_Name":"TESLA, INC.",
"IsPrimary":false,
"Name":"Multipurpose Passenger Vehicle (MPV)"
},
{
Итак, я попытался использовать:
new_file=pd.read_json ('file.json')
pd.json_normalize(new_file)
а недостатка нет.. Любые предложения будут ценны..:))
Возможно, стоит прочитать это — stackoverflow.com/help/minimal-reproducible-example. Я изо всех сил пытаюсь понять, где именно ваша ошибка
Кроме того, я считаю, что пробел после read_json здесь является опечаткой, если не удалить его в коде!
@FrancisWebb: Как это может быть опечаткой?
Спасибо вам всем! Я нашел решение:
with open('dirty.json', 'r', encoding='utf-8') as f:
dirty = json.load(f)
clear = []
for i in dirty['Results']:
if len(i['VehicleTypes']) == 0:
end = 1
else:
end = len(i['VehicleTypes'])
for j in range(end):
card = {}
card['Country'] = i['Country']
card['Mfr_CommonName'] = i['Mfr_CommonName']
card['Mfr_ID'] = i['Mfr_ID']
card['Mfr_Name'] = i['Mfr_Name']
try:
card['IsPrimary'] = i['VehicleTypes'][j]['IsPrimary']
card['Name'] = i['VehicleTypes'][j]['Name']
except (IndexError, KeyError):
pass
clear.append(card)
Итак, что пошло не так? Что было в
new_file
? Я не знаком сpd.read_json()
.