shell JQ -Map一个数组,只改变现有的属性,而不改变其他属性

fae0ux8s  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(153)

考虑以下json:

[
    {
        "propertyA": 11,
        "nestedPropertyB": [ 12 ]
    },
    {
        "propertyA": 21
    }
]

我想得到如下结果:

[
    {
        "propertyA": 11,
        "propertyB": 12
    },
    {
        "propertyA": 21,
        "propertyB": null
    }
]

我希望在这里使用数组流,但是它对我不起作用。使用:

jq "map({propertyB: .nestedPropertyB[]} + . | del(.nestedPropertyB))"

导致异常:

jq: error (at <stdin>:10): Cannot iterate over null (null)

但是,当我使用可空数组流时,第二个对象被丢弃了。

jq "map({propertyB: .nestedPropertyB[]?} + . | del(.nestedPropertyB))"

导致:

[
    {
      "propertyB": 2,
      "propertyA": 1
    }
]

我将感谢帮助我解决这个问题。

ubof19bj

ubof19bj1#

您可以使用替代运算子//来设定预设值:
第一个
Demo

相关问题