Python 如何解析gerrit查询的JSON输出以提取数据?
我有一个场景,我试图从gerrit查询的输出中提取一些数据。但无法使用awk 命令: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
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标题)马塞洛-别忘了添加<代码>。事情很快就会变得糟糕,尤其是在处理非字符串和插值时,它们一起绕过了这些。