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

Python 如何解析gerrit查询的JSON输出以提取数据?,python,json,jq,gerrit,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": "Ie2ef9e47fc6c

我有一个场景,我试图从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文件中显示/存储的唯一信息

您可以使用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的更多信息。

-将JSON解析为一个对象,然后读取并处理它,然后像其他任何对象一样输出它。您期望的输出不是逗号分隔(CSV)文件。你真的想要一个CSV文件吗?你提供的结果需要预处理(你可能已经复制了它)。我的建议是:1。将结果转储到文件中,然后处理2。用python加载。它可能看起来像:将打开的JSON(“文本.jSON”、“R”)作为文件:OUT=文件.Read=JSON. Load(OUT)GLOSAYALE标题=结果[ [词汇表] ] [ [标题] ]打印(GLIOSALY标题)马塞洛-别忘了添加<代码>。事情很快就会变得糟糕,尤其是在处理非字符串和插值时,它们一起绕过了这些。