Подтвердить что ты не робот

Json.loads() возвращает объект unicode вместо словаря

Я читаю json из файла на удаленном сервере с использованием тэга:

from StringIO import StringIO

output = StringIO()
get(file_name, output)

output = output.getvalue()

Теперь значение output:

'"{\\n \\"status\\": \\"failed\\", \\n \\"reason\\": \\"Record already exists.\\"\\n}"'

Когда я пытаюсь проанализировать эту строку в словаре с помощью json.loads(output), он возвращает объект unicode u'{\n "status": "failed", \n "reason": "Record already exists."\n}', а не словарь.

Я придумал довольно плохое исправление, просто передав новый объект unicode обратно в json.loads():

json.loads(json.loads(output))

Есть ли другое решение для этого?

Приветствия

4b9b3361

Ответ 1

Ваши данные экранированы.

json.loads(output.decode('string-escape').strip('"'))

должен предоставить желаемые результаты:

Out[12]: {'reason': 'Record already exists.', 'status': 'failed'}

Ответ 2

Решение здесь будет заключаться в том, чтобы выяснить, почему ваш файл дважды кодируется JSON, но учитывая, что данные, передающие его через json.loads дважды, являются правильным подходом.