【问题标题】:Using attrs to turn JSONs into Python classes使用 attrs 将 JSON 转换为 Python 类
【发布时间】: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 一起工作。

标签: python json python-attrs


【解决方案1】:

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

  1. cattrs
  2. related

cattrs 由 attrs 最多产的贡献者之一维护。

我知道有些人也提到了与其他系统的集成。在这一点上,attrs 不太可能开发自己的解决方案,因为外部开发的看起来不错。

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2018-01-04
    • 2019-02-23
    • 2010-09-16
    • 2021-09-01
    • 2021-12-03
    • 2019-07-18
    相关资源
    最近更新 更多