gpt4 book ai didi

python - jsonpickle 忽略集合双端队列的 maxlen

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:02 25 4
gpt4 key购买 nike

我尝试使用 jsonpickle 保存和恢复 collection.deque 列表,但 maxlen 参数在此过程中丢失。

original_test = deque(maxlen=2)
original_test.append(1)
original_test.append(2)

print(original_test)
>>> deque([1, 2], maxlen=2) # everything ok
<小时/>
encoded_test = jsonpickle.encode(original_test)
print(encoded_test)
>>> {"py/seq": [1, 2], "py/object": "collections.deque"} # where is maxlen?
<小时/>
restored_test = jsonpickle.decode(encoded_test)
restored_test.append(3)

print(restored_test)
>>> deque([1, 2, 3]) # maxlen missing

最佳答案

jsonpickle 本身不会猜测哪些属性应该被序列化。如果您正在编写自定义类,则必须 tell it

由于您无法控制 deque 类,因此您必须实现 custom serialization handler :

class DequeHandler(jsonpickle.handlers.BaseHandler):
def flatten(self, obj, data):
return list(obj),obj.maxlen
def restore(self,obj):
return deque(obj[0], maxlen=obj[1])
jsonpickle.handlers.register(deque, DequeHandler)

关于python - jsonpickle 忽略集合双端队列的 maxlen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19494734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com