среда, 4 декабря 2013 г.

Сериализация JSON в кодировке UTF-8 в Python 2.6

Что делать, если по каким-то причинам мы сидим на Python 2.6+, и нам необходимо сохранить в файл объект, содержащий кириллические строки? Об этом много говорили люди, заинтересованные в JSON-сериализации иврита. Удивительно - с этим столкнулся даже Максим Дубинин, создатель Гис-лаба. И до сих пор нигде нет рабочего решения. Оказывается, предлагаемого
ensure_ascii=False
недостаточно, надо получившуюся JSON строку явно закодировать в utf-8:
with open(name, "w") as f:
    text = json.dumps(json_obj, indent=4, ensure_ascii=False)
    f.write(text.encode('utf-8'))