Python сохраняет сериализацию, которая правильно обрабатывает str / unicode?

Кроме PyYAML, существуют ли какие-либо безопасные библиотеки сериализации данных Python, которые правильно обрабатывают unicode / str ?

Например:

>>> json.loads(json.dumps([u"x", "x"]))
[u'x', u'x'] # Both unicode
>>> msgpack.loads(msgpack.dumps([u"x", "x"]))
['x', 'x'] # Neither are unicode
>>> bson.loads(bson.dumps({"x": [u"x", "x"]}))
{u'x': [u'x', 'x']} # Dict keys become unicode
>>> pyamf.decode(pyamf.encode([u"x", "x"])).next()
[u'x', u'x'] # Both are unicode

Обратите внимание, что я хочу, чтобы сериализаторы были безопасными (поэтому отсутствуют pickle и marshel ), а PyYAML - это вариант , но мне не нравится сложность YAML, поэтому я хотел бы знать, есть ли другие варианты.

Изменить : похоже, что есть некоторая путаница в отношении характера моих данных. Некоторые из них являются Unicode (например, имена), а некоторые из них являются двоичными (например, изображения) ... Поэтому библиотека сериализации, которая сбивает с толку unicode и str , для меня так же бесполезна, как и библиотека, которая путает "42" и 42 .

5
задан David Wolever 9 August 2011 в 14:01
поделиться