Python保存正确处理str/unicode的序列化?

Dav*_*ver 5 python serialization

除了PyYAML之外,是否有正确处理unicode/ str?的安全Python数据序列化库?

例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)

请注意,我想向串行是安全的(所以picklemarshel都出来了),并且PyYAML是一种选择,但我不喜欢YAML的复杂性,所以我想知道是否有其他的选择.

编辑:似乎对我的数据的性质存在一些混淆.其中一些是Unicode(例如,名称),其中一些是二进制(例如,图像)...所以一个序列化库混淆unicode并且str对我来说就像一个混淆"42"和混淆的库一样无用42.

taa*_*avi 1

你试过伯特吗?

>>> import bert
>>> bert.decode(bert.encode([u"x", "x"]))
[u'x', 'x']
>>> bert.decode(bert.encode({"x":[u"x", "x"]}))
{'x': [u'x', 'x']}
Run Code Online (Sandbox Code Playgroud)

(要安装,您必须首先手动安装 erlastic,因为这个未完成的拉取请求