使用 attrs 将 JSON 转换为 Python 类
Posted
技术标签:
【中文标题】使用 attrs 将 JSON 转换为 Python 类【英文标题】:Using attrs to turn JSONs into Python classes 【发布时间】:2018-07-26 07:18:07 【问题描述】:我想知道是否可以使用 attrs 库将嵌套的 JSON 转换为 Python 类实例,以便我可以通过点符号 (object.attribute.nested_attribute
) 访问该 JSON 中的属性。
我的 JSON 有一个固定的架构,我可以手动定义该架构的类,但我不确定是否可以将 JSON 转换为嵌套类结构而无需实例化每个嵌套对象单独。我基本上是在寻找一个 fromdict()
函数,它知道(基于键)将 JSON 对象转换为哪个类。
(我也知道还有其他方法可以构建“DotDicts”,但这些方法对我来说似乎总是有点老套,可能需要彻底测试以验证它们是否正常工作。)
【问题讨论】:
@deceze 我说我知道这些其他方法,我专门询问在 attrs 框架内执行此操作的方法。你介意在给它打一个“重复”之前阅读这个问题吗? @user8793 在这种情况下,我会建议您:请使用限制您使用 attrs 的限制更新您的问题。由于提供的重复链接中给出了很好的答案,这将为您提供您所请求的对象结构。 @deceze attrs (attrs.org/en/stable/index.html) 是一个用于简化 Python 类工作的库。很抱歉,如果你连问题的内容都不知道,为什么不继续前进? 如果您在问题中简单地提到“库”或“框架”一词以避免这种混淆,那将会有所帮助。为了记录,我不是唯一一个对此感到困惑的人,我对建议的副本采取了行动。考虑到你的问题可能不太清楚,不要把一切都归咎于无能。 @EdwinvanMierlo 我说过我不相信这些方法(手动构建“DotDict”类)能够真正涵盖生产环境中可能出现的所有边缘情况。由于 attrs 是一个完善的项目,其特定目标是涵盖所有这些边缘情况,我想知道它是否可以适应(或已经)与 JSON 一起工作。 【参考方案1】:attrs wiki 目前有两个序列化库:
-
cattrs
和related。
cattrs 由 attrs 最多产的贡献者之一维护。
我知道有些人也提到了与其他系统的集成。在这一点上,attrs 不太可能开发自己的解决方案,因为外部开发的看起来不错。
【讨论】:
以上是关于使用 attrs 将 JSON 转换为 Python 类的主要内容,如果未能解决你的问题,请参考以下文章