小编Hig*_* M.的帖子

如何使用 attrs 和 cattrs 反序列化带有可选字段的 json

我想使用 attr 和 cattrs 反序列化 MongoDB 文档。由于 noSQL 没有固定的模式,我需要以某种方式指向 attr.ib-s,它们可能会被遗漏,而不是在这种情况下将它们添加到 dict 的对象中。

我之前使用过漏勺来做这种事情,它在漏勺.SchemaNode 构造函数中提供了一个“缺失”的参数,它通过将“漏勺”作为参数传递来做到这一点。我想知道如何对这些库做同样的事情,我在文档中没有找到任何内容。所以:

import attr
from cattr import structure

@attr.s
class ABC:
    A: float = attr.ib()
    B: float = attr.ib()
    C: float = attr.ib()

d = {'A': 1, 'B': 2}
obj = structure(d, ABC)
Run Code Online (Sandbox Code Playgroud)

应该返回一个只有 A 和 B 属性的对象。我一直在尝试使用一些参数(init、default...),甚至使用来自键入 lib 的 Optional 类,但是我尝试的所有方法都以某种方式返回了该属性。

谢谢你的帮助。

python json python-attrs

0
推荐指数
1
解决办法
1280
查看次数

标签 统计

json ×1

python ×1

python-attrs ×1