如何使用jq将新的键值对添加到json中?

bvpmtnay  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个JSON文件格式如下

[
    {
        "foo" : "fooValue",
        "bar" : "barValue"
    },
    {
        "foo" : null,
        "bar" : null
    }
]

字符串
我想根据键foo和bar的值的存在,使用jq向这个json添加一个新的键值对baz。如果foo和bar都不是null,那么baz应该是字符串“true”。如果foo或bar为null或两者都为null,则baz应为字符串“false”。使用jq实现这一目标的最佳方法是什么?我知道如何将键值对附加到json,但我不确定如何有条件地完成这个过程。谢谢你的好意

13z8s7eq

13z8s7eq1#

根据.foo.bar的相等性,使用布尔运算符andnull使用null,将结果分配给一个新的键.bazmap使用此过滤器输入。

map(.baz = .foo != null and .bar != null)

个字符
Demo
如果新值确实应该是字符串,只需对计算出的布尔值进行插值:

map(.baz = "\(.foo != null and .bar != null)")
[
  {
    "foo": "fooValue",
    "bar": "barValue",
    "baz": "true"
  },
  {
    "foo": null,
    "bar": null,
    "baz": "false"
  }
]

的字符串
Demo

相关问题