У меня возникли трудности с загрузкой ответа API из import.io в файл или список.Проблема с JSON Line при загрузке из import.io с использованием Python
enpoint я использую 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? Все остальные чтения jsonline, которые я делаю из других источников, работают отлично, кроме этого.
EDIT на основе комментариев:
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'
Подождите, что? Ваш результат выглядит так, как вы (или они) добавили 'repr()' содержимого API, поэтому строки JSON закодированы как литерал Python. Что означает 'print repr (open (tempor_json_file_path) .read (300))' похоже? –
Добавлено редактирование на вопрос – johan855
Да, данные * с двойным кодированием *. Это выглядит как ошибка на стороне import.io. Как их скрежет? Вы пишете код? Если это так, не кодируйте JSON на их стороне, потому что похоже, что вывод автоматически закодирован JSON. –