0

我正在尝试格式化 json 输出并在满足条件时排除元素。

1)在这种情况下,我想使用 jq 排除任何包含“valueFrom”的元素

[{
        "name": "var1",
        "value": "var1value"
    },
    {
        "name": "var2",
        "value": "var2value"
    },
    {
        "name": "var3",
        "value": "var3value"
    },
    {
        "name": "var4",
        "value": "var4value"
    },
    { # <<< exclude this element as valueFrom exists
        "name": "var5",  
        "valueFrom": {
            "secretKeyRef": {
                "key": "var5",
                "name": "var5value"
            }
        }
    }
]

排除上面提到的元素后,我试图返回一个看起来像这样的结果集。

var1: var1value
var2: var2value
var3: var3value
var4: var4value

任何反馈表示赞赏。谢谢。

4

1 回答 1

4

使用、和valueFrom的组合选择没有键的数组项。然后根据需要格式化对象。select/1has/1not/0

$ jq -r '.[] | select(has("valueFrom") | not) | "\(.name): \(.value)"' input.json
于 2019-11-11T20:23:24.963 回答