Ошибка 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)
Другие вопросы по тегам