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))

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

ура

2 Solutions collect form web for “json.loads () возвращает объект unicode вместо словаря”

Ваши данные сбрасываются.

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

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

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

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

  • Python: UnicodeEncodeError при чтении из stdin
  • Типы Python str и Unicode
  • Проверьте строку, если это Юникод, какой стандарт UTF и длина его в байтах?
  • Как преобразовать символы Unicode в float в Python?
  • Проблема Unicode с SQLAlchemy
  • Python - обработка файлов с смешанным кодированием
  • Разница между u'string 'и unicode (строка)
  • Как исправить одну строку юникода, например «\ u8bf8 \ u845b \ u4eae» в python?
  • os.listdir удаляет характерный акцент
  • Как может быть отказано в python 2 doctest и все же не имеет никакого значения в значениях в сообщении об ошибке?
  • Я не понимаю кодировку и декодирование в Python (2.7.3)
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.