使用attrs将JSON转换为Python类

8
我想知道是否可以使用attrs库将嵌套的JSON转换为Python类实例,以便我可以通过点符号(object.attribute.nested_attribute)访问该JSON中的属性。

我的JSON具有固定的模式,我可以手动定义该模式的类,但我不确定是否可以在不必逐个实例化每个嵌套对象的情况下将JSON转换为嵌套类结构。我基本上正在寻找一个fromdict()函数,它知道(基于键)将JSON对象转换为哪个类。

(我也知道有其他构建“DotDicts”的方法,但这些方法对我来说似乎总是有点hacky,并且可能需要彻底测试以验证它们是否正确工作。)


@deceze,我说过我知道这些其他方法,我特别是在问是否有一种在attrs框架内完成此操作的方法。您能否在贴上“重复”标签之前先阅读问题? - gmolau
1
在这种情况下,我建议您更新您的问题,说明限制您使用attrs的原因。由于提供了重复链接中的好答案,这将为您提供您所请求的确切对象结构。 - Edwin van Mierlo
@deceze attrs (http://www.attrs.org/en/stable/index.html) 是一个简化 Python 类操作的库。抱歉,如果你连问题是关于什么都不知道,为什么不直接跳过呢? - gmolau
如果你在问题中简单地提到了“库”或“框架”这个词,就可以避免这样的混淆。值得一提的是,我不是唯一被困惑的人,我是根据建议的重复操作的。考虑到你的问题可能不够清晰,不要把所有责任都归咎于无能。 - deceze
@EdwinvanMierlo 我说我不相信这些方法(手动构建'DotDict'类)能真正覆盖在生产环境中可能发生的所有边缘情况。由于attrs是一个旨在涵盖所有这些边缘情况的成熟项目,我想知道它是否可以适应(或已经)与JSON一起使用。 - gmolau
@deceze 如果您标记一个问题为重复,那么您有责任积极验证您是否正确理解了它。 - gmolau
1个回答

9

attrs wiki目前有两个序列化库:

  1. cattrs
  2. related

cattrs由attrs最活跃的贡献者之一维护。

我知道有些人提到了与其他系统的集成。但目前看来,attrs不太可能开发自己的解决方案,因为外部开发的解决方案看起来相当不错。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接