kubernetes popeye 向带有 JQ 的 cvs 报告 JSON
kubernetes popeye report JSON to cvs with JQ
我需要在电子表格中重新格式化 Popeye Kubernetes 报告。
我用了jq但是有点棘手
{
"popeye": {
"score": 90,
"grade": "A",
"sanitizers": [
{
"sanitizer": "cluster",
"tally": {
"ok": 1,
"info": 0,
"warning": 0,
"error": 0,
"score": 100
},
"issues": {
"Version": [
{
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
]
}
}
]
}
}
导出到 csv 的最佳格式如下:
{
"sanitizer" : "cluster",
"kube-object" : "Version",
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
我尝试了很多 jq 命令都没有成功。
有什么想法吗?
谢谢。
您要求导出 CSV,但显示的是 object 所需的格式。所以,我将 object 的字段解释为 CSV 列:
["sanitizer", "kube-object", "group", "level", "message"],
(.popeye.sanitizers[] | [.sanitizer] + (
.issues | to_entries[] | [.key, (.value[] | .group, .level, .message)])
)
| @csv
"sanitizer","kube-object","group","level","message"
"cluster","Version","__root__",0,"[POP-406] K8s version OK"
使用 jq
的 --raw-output
或 -r
参数获取正确的 CSV 格式。另外,如果不需要 headers.
,请删除第一行
一个选项是使用 map()
和 +
运算符来生成 JSON 问题中呈现的格式,例如
jq - r '.[].sanitizers | map({sanitizer}+{"kube-object" : "Version"}+.issues.Version[])[]'
哪里
{"kube-object" : "Version"}
已添加为源 JSON
的不存在的键值对
如果您的目标是逐行生成以逗号分隔的键值对,请考虑使用
jq -r '.[].sanitizers | map({sanitizer}+{"kube-object" : "Version"}+.issues.Version[])[] | to_entries[] | "\(.key), \(.value)"'
我需要在电子表格中重新格式化 Popeye Kubernetes 报告。 我用了jq但是有点棘手
{
"popeye": {
"score": 90,
"grade": "A",
"sanitizers": [
{
"sanitizer": "cluster",
"tally": {
"ok": 1,
"info": 0,
"warning": 0,
"error": 0,
"score": 100
},
"issues": {
"Version": [
{
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
]
}
}
]
}
}
导出到 csv 的最佳格式如下:
{
"sanitizer" : "cluster",
"kube-object" : "Version",
"group": "__root__",
"level": 0,
"message": "[POP-406] K8s version OK"
}
我尝试了很多 jq 命令都没有成功。
有什么想法吗?
谢谢。
您要求导出 CSV,但显示的是 object 所需的格式。所以,我将 object 的字段解释为 CSV 列:
["sanitizer", "kube-object", "group", "level", "message"],
(.popeye.sanitizers[] | [.sanitizer] + (
.issues | to_entries[] | [.key, (.value[] | .group, .level, .message)])
)
| @csv
"sanitizer","kube-object","group","level","message"
"cluster","Version","__root__",0,"[POP-406] K8s version OK"
使用 jq
的 --raw-output
或 -r
参数获取正确的 CSV 格式。另外,如果不需要 headers.
一个选项是使用 map()
和 +
运算符来生成 JSON 问题中呈现的格式,例如
jq - r '.[].sanitizers | map({sanitizer}+{"kube-object" : "Version"}+.issues.Version[])[]'
哪里
{"kube-object" : "Version"}
已添加为源 JSON
的不存在的键值对如果您的目标是逐行生成以逗号分隔的键值对,请考虑使用
jq -r '.[].sanitizers | map({sanitizer}+{"kube-object" : "Version"}+.issues.Version[])[] | to_entries[] | "\(.key), \(.value)"'