我正在验证一个json文件,我需要验证一个字段,如果该字段为null,则分配一个默认值,我找不到如何使用if conditional执行验证
file.json
{ "timeout": 100 }
jq -r .timeout fiile.json
这里它正确地打印了值,我需要验证这个字段是否为空,以便用jq为它分配一个默认值先谢了
tcomlyy61#
使用更新操作符|=更新相关字段。对于条件,只需与null进行比较。
|=
null
jq '.timeout |= if . == null then 200 else . end'
如果输入文件为
它将保持不变,因为.timeout不是null。但如果它是
.timeout
{ "timeout": null }
则它将被更改为给定的默认值,如下所示:
{ "timeout": 200 }
注意,这只会触发null的内容,还有其他方法可以测试false、数字0 0、空字符串""等,甚至完全不存在该字段。
false
0
""
0kjbasz62#
您可以尝试替代运算符//
//
jq '.timeout //= 200' file.json
2条答案
按热度按时间tcomlyy61#
使用更新操作符
|=
更新相关字段。对于条件,只需与null
进行比较。如果输入文件为
它将保持不变,因为
.timeout
不是null
。但如果它是则它将被更改为给定的默认值,如下所示:
注意,这只会触发
null
的内容,还有其他方法可以测试false
、数字00
、空字符串""
等,甚至完全不存在该字段。0kjbasz62#
您可以尝试替代运算符
//