python的快速对象序列化程序
Shibazuke的Python项目详细描述
Shibazuzke提供简单快速的对象序列化。 通常shibazuzke生成的数据比picke或json小, 在序列化和反序列化上都更快。Shibazuke是 旨在安全地用于进程间通信,因此希望 对恶意编制的数据进行反序列化不会造成损害。
用法
转储(obj)
Return the shibazuke representation of the object as a string.
加载(字符串)
Read a shibazuke object hierarchy from a string.
检查
下面是Shibazuzke的简单示例:
>>> import shibazuke >>> data = ['abc', {1:(2,3,4)}] >>> result = shibazuke.dumps(data) >>> data == shibazuke.loads(result) True
限制
可以序列化以下类型的python对象。
int, long, str, unicode, tuple, list, dict
要序列化的对象数限制为2147483647。
序列化字符串的长度限制为2147483647。
对象图的最大深度限制为100,而循环引用不 支持。
>>> import shibazuke >>> list1 = [] >>> list2 = [list1] >>> list1.append(list2) >>> shibazuke.dumps(list1) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "shibazuke.pyx", line 524, in shibazuke.dumps File "shibazuke.pyx", line 309, in shibazuke.Serializer.dumps File "shibazuke.pyx", line 300, in shibazuke.Serializer._build File "shibazuke.pyx", line 246, in shibazuke.Serializer._handle_list File "shibazuke.pyx", line 300, in shibazuke.Serializer._build File "shibazuke.pyx", line 246, in shibazuke.Serializer._handle_list File "shibazuke.pyx", line 300, in shibazuke.Serializer._build File "shibazuke.pyx", line 238, in shibazuke.Serializer._handle_list ValueError: Circular refecence([[[...]]])
对象可以在要序列化的对象树中多次出现, 但它们被反序列化为不同的对象。
>>> import shibazuke >>> list1 = [] >>> list2 = [list1, list1] >>> result = shibazuke.dumps(list2) >>> serialized = shibazuke.loads(result) >>> serialized[0] is serialized[1] False