首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将复杂的json文件建模为python类

如何将复杂的json文件建模为python类
EN

Stack Overflow用户
提问于 2017-05-01 08:03:57
回答 1查看 117关注 0票数 0

是否有任何python助手库可以用来创建模型,用于生成复杂的json文件,如以下所示。我读过关于科兰德的文章,但我不确定它能满足我的需要。下面这个棘手的部分是,trigger-rule部分可能有嵌套的match规则,如https://github.com/adnanh/webhook/wiki/Hook-Rules中所描述的

代码语言:javascript
复制
[
  {
    "id": "webhook",
    "execute-command": "/home/adnan/redeploy-go-webhook.sh",
    "command-working-directory": "/home/adnan/go",
    "pass-arguments-to-command":
    [
      {
        "source": "payload",
        "name": "head_commit.id"
      },
      {
        "source": "payload",
        "name": "pusher.name"
      },
      {
        "source": "payload",
        "name": "pusher.email"
      }
    ],
    "trigger-rule":
    {
      "and":
      [
        {
          "match":
          {
            "type": "payload-hash-sha1",
            "secret": "mysecret",
            "parameter":
            {
              "source": "header",
              "name": "X-Hub-Signature"
            }
          }
        },
        {
          "match":
          {
            "type": "value",
            "value": "refs/heads/master",
            "parameter":
            {
              "source": "payload",
              "name": "ref"
            }
          }
        }
      ]
    }
  }
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 08:22:00

定义一个这样的类:

代码语言:javascript
复制
class AttributeDictionary(dict):
    __getattr__ = dict.__getitem__
    __setattr__ = dict.__setitem__

加载JSON时,将AttributeDictionary作为object_hook传递

代码语言:javascript
复制
import json

data = json.loads(json_str, object_hook=AttributeDictionary)

然后,可以通过将键指定为属性来访问dict条目:

代码语言:javascript
复制
print data[0].id

输出

代码语言:javascript
复制
webhook

注意:,您需要用下划线替换键中的破折号。如果你不这样做,这种方法对那些钥匙就行不通了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43716105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档