Ответ 1
Ваши данные экранированы.
json.loads(output.decode('string-escape').strip('"'))
должен предоставить желаемые результаты:
Out[12]: {'reason': 'Record already exists.', 'status': 'failed'}
Я читаю 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))
Есть ли другое решение для этого?
Приветствия
Ваши данные экранированы.
json.loads(output.decode('string-escape').strip('"'))
должен предоставить желаемые результаты:
Out[12]: {'reason': 'Record already exists.', 'status': 'failed'}
Решение здесь будет заключаться в том, чтобы выяснить, почему ваш файл дважды кодируется JSON, но учитывая, что данные, передающие его через json.loads
дважды, являются правильным подходом.