в строках json всегда используется "
, а не '
, поэтому '\u05d9\u05d7\u05e4\u05d9\u05dd'
не является строкой json.
Если вы загрузите действительный текст json, то все строки Python в нем будут Unicode, поэтому вы нене нужно ничего декодировать.Для их отображения вам может понадобиться кодировать их, используя кодировку символов, подходящую для вашего терминала.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
d = json.loads(u'''{"title": "\u05d9\u05d7\u05e4\u05d9\u05dd"}''')
print d['title'].encode('utf-8') # -> יחפים
Примечание: это совпадение, что исходная кодировка(указано в первой строке) равно выходной кодировке (последняя строка), они не связаны и могут отличаться.
Если вы хотите видеть меньше \uxxxx
последовательностей в jsonтекст тогда вы можете использовать ensure_ascii=False
:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import json
L = ['יחפים']
json_text = json.dumps(L) # default encoding for input bytes is utf-8
print json_text # all non-ASCII characters are escaped
json_text = json.dumps(L, ensure_ascii=False)
print json_text # output as-is
Выход
["\u05d9\u05d7\u05e4\u05d9\u05dd"]
["יחפים"]