如何解析Gerrit查询的JSON输出以提取数据?

时间:2018-11-06 09:28:01

标签: python json jq gerrit

我有一种情况,我试图从gerrit查询的输出中提取一些数据。但是无法使用awk

命令:

ssh -p 29418 gerrit.abc.se gerrit query --format=JSON project:dddd status:merged branch:master change:Ie2ef9e47f --submit-records

以上命令的输出:

{
  "project": "dddd",
  "branch": "master",
  "id": "Ie2ef9e47fc6c046091d93521198bf0a1075cb77e",
  "number": 3984134,
  "subject": "adding configuration",
  "owner": {
    "name": "abc",
    "email": "abc.com",
    "username": "eshakuy"
  },
  "url": "https://gerrit.abc.se/3984134",
  "commitMessage": "adding configuration\n\nChange-Id: Ie2ef9e47fc6c046091d93521198bf0a1075cb77e\n",
  "createdOn": 1533208993,
  "lastUpdated": 1536301464,
  "open": false,
  "status": "MERGED",
  "submitRecords": [
    {
      "status": "OK",
      "labels": [
        {
          "label": "Verified",
          "status": "OK",
          "by": {
            "name": "ADP Automation",
            "username": "adpauto"
          }
        },
        {
          "label": "Code-Review",
          "status": "OK",
          "by": {
            "name": "abc",
            "email": "abc.com",
            "username": "eeeee"
          }
        }
      ]
    }
  ]
}
{
  "type": "stats",
  "rowCount": 1,
  "runTimeMilliseconds": 10,
  "moreChanges": false
}

我想从上面的输出中提取的是:

submit Records:

label:Verified status:OK name:ADP Automation
lable:Code-Review status:OK name:abc

那是我需要显示/存储在csv文件中的唯一信息。

1 个答案:

答案 0 :(得分:2)

您可以像下面的示例一样使用jq程序:

ssh -p 29418 gerrit.abc.se gerrit query --format=JSON project:dddd status:merged branch:master change:Ie2ef9e47f --submit-records |
 jq --raw-output '
   .submitRecords[]? 
   | .labels[]
   | .label + " = " + .status + " by " + .by.name'

Code-Review => OK by Marcelo Avila de Oliveira
Verification => OK by Gerrit

查看有关jq here的更多信息。