我有一个格式如下的JSON文件
[
{
"foo" : "fooValue",
"bar" : "barValue"
},
{
"foo" : null,
"bar" : null
}
]
我想根据键foo和bar的值的存在,将新的键值对baz
添加到此JSON中。如果foo和bar都不为空,则baz
应该是字符串"true"。如果foo或bar均为空或两个为null,则baz
应为字符串"false"。使用JQ完成此操作的最佳方法是什么?我了解如何将钥匙值对附加到JSON,但我不确定如何有条件地执行此过程。谢谢
分析解答
使用基于.foo
的布尔连词 操作员 and
和.bar
的(in)EQUEALITY,null
,分配,将结果用于新的键.baz
,然后使用此过滤器map
输入。
map(.baz = .foo != null and .bar != null)
[
{
"foo": "fooValue",
"bar": "barValue",
"baz": true
},
{
"foo": null,
"bar": null,
"baz": false
}
]
如果新值确实是字符串,则只需插计算的布尔值:
map(.baz = "\(.foo != null and .bar != null)")
[
{
"foo": "fooValue",
"bar": "barValue",
"baz": "true"
},
{
"foo": null,
"bar": null,
"baz": "false"
}
]