fer*_*k86 3 python json jsonpickle
当使用 jsonpickle 将对象序列化为 json 时,我注意到诸如 datetime 之类的对象会存储一次,然后将来使用的对象将存储为引用值,例如{"py/id":1}. 是否可以存储实际值而不是参考值?这个引用似乎是隐藏的,直接与数据库交互时会造成混淆。
前任。
class MyClass:
def __init__(self, eee):
now = datetime.datetime.utcnow()
self.ddd = now
self.ddd2 = now
self.ddd3 = now
杰森是
{"py/object": "__main__.MyClass", "py/state": {"ddd": {"py/object": "datetime.datetime", "__reduce__": [{"py/type": "datetime.datetime"}, ["B+IBFhYJCwx9oQ=="]]}, "ddd2": {"py/id": 1}, "ddd3": {"py/id": 1}, "eee": "fwaef"}}
make_refs您可以在调用时使用该参数jsonpickle.encode:
import datetime\nimport jsonpickle\n\nclass MyClass:\n def __init__(self, eee):\n now = datetime.datetime.utcnow()\n self.ddd = now\n self.ddd2 = now\n self.ddd3 = now\n\nmy_object = MyClass(\'hi\')\njsonpickle.encode(my_object, make_refs=False)\nRun Code Online (Sandbox Code Playgroud)\n\n从这里的文档:
\n\n\n\nmake_refs \xe2\x80\x93 如果设置为 False,则禁用 jsonpickle\xe2\x80\x99s 引用支持。与 id() 相同的对象不会在encode()/decode() 中保留\xe2\x80\x99,但生成的 JSON 流在概念上会更简单。jsonpickle 检测循环对象,并在 make_refs 设置为 False 时通过调用 repr() 而不是递归来打破循环。
\n
| 归档时间: |
|
| 查看次数: |
2277 次 |
| 最近记录: |