Select 可能的相似键名中的值字段

Select value field out of possible similar key names

我有一个 pom.json 有一个错误:

{
        "Components": [
                {
                        "ARTIFACTID": "good artifact",
                        "BuildJobDate": "2020-01-20T16:39:50"
                },
                {
                        "ARTIFACT_ID": "bad artifact",
                        "BuildJobDate": "'2021-11-29T17:23:39'"
                },
                {
                        "ARTIFACTID": "another good artifact",
                        "BuildJobDate": "2022-01-26T21:18:20"
                }
        ]
}

在我的安装脚本中,我收集了所有 ARTIFACTID:

local -ra artifacts=( $(jq -r '.Components | .[].ARTIFACTID' "$manifest") )

试图通过 .[] | {ARTIFACTID, ARTIFACT_ID} 修复它,但无法理解如何只保留有效值

我的问题是:有没有办法在 jq 中的可能字段中 select 字段?

使用带有布尔条件的 select 表达式

.Components | map(select(.ARTIFACTID or .ARTIFACT_ID))

执行 {ARTIFACTID, ARTIFACT_ID} 需要任一键出现在结果对象中。因此,如果其中一个键不存在,它们将更新为 null。使用 select 子句计算表达式并仅在计算结果为 true

时将结果生成到对象中

jqplay - demo