Ошибка JSON Line при загрузке из import.io с использованием Python
Я с трудом пытаюсь загрузить ответ API из import.io в файл или список.
Я использую точку зрения https://data.import.io/extractor/{0}/json/latest?_apikey={1}
Ранее все мои сценарии были настроены на использование обычного JSON, и все работало хорошо, но теперь они решили использовать линию JSON, но это почему-то кажется неправильным.
Способ, которым я пытался адаптировать свои сценарии, состоит в том, чтобы прочитать ответ API следующим образом:
url_call = 'https://data.import.io/extractor/{0}/json/latest?_apikey={1}'.format(extractors_row_dict['id'], auth_key)
r = requests.get(url_call)
with open(temporary_json_file_path, 'w') as outfile:
json.dump(r.content, outfile)
data = []
with open(temporary_json_file_path) as f:
for line in f:
data.append(json.loads(line))
проблема заключается в том, что когда я проверяю данные [0], все содержимое файла json помещается в него...
data[1] = IndexError: list index out of range
Вот пример data[0][:300]
:
u'{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","result":{"extractorData":{"url":"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de","resourceId":"23455234","data":[{"group":[{"Brand":[{"text":"Brand","href":"https://www.example.com'
У кого-нибудь есть опыт с ответом этого API? Все остальные чтения json line, которые я делаю из других источников, работают нормально, кроме этого.
РЕДАКТИРОВАТЬ на основе комментария:
print repr(open(temporary_json_file_path).read(300))
дает это:
'"{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"result\\":{\\"extractorData\\":{\\"url\\":\\"https://www.example.com/de/shop?condition[0]=new&page=1&lc=DE&l=de\\",\\"resourceId\\":\\"df8de15cede2e96fce5fe7e77180e848\\",\\"data\\":[{\\"group\\":[{\\"Brand\\":[{\\"text\\":\\"Bra'
1 ответ
В вашем коде есть ошибка, в которой вы используете двойное кодирование:
with open(temporary_json_file_path, 'w') as outfile:
json.dump(r.content, outfile)
Пытаться:
with open(temporary_json_file_path, 'w') as outfile:
outfile.write(r.content)