json 如何在jq中使用if条件验证字段?

fykwrbwg  于 2023-02-10  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在验证一个json文件,我需要验证一个字段,如果该字段为null,则分配一个默认值,我找不到如何使用if conditional执行验证

file.json
{  
    "timeout": 100
}
jq -r .timeout fiile.json

这里它正确地打印了值,我需要验证这个字段是否为空,以便用jq为它分配一个默认值
先谢了

tcomlyy6

tcomlyy61#

使用更新操作符|=更新相关字段。对于条件,只需与null进行比较。

jq '.timeout |= if . == null then 200 else . end'

如果输入文件为

{  
  "timeout": 100
}

它将保持不变,因为.timeout不是null。但如果它是

{  
  "timeout": null
}

则它将被更改为给定的默认值,如下所示:

{  
  "timeout": 200
}

注意,这只会触发null的内容,还有其他方法可以测试false、数字0 0、空字符串""等,甚至完全不存在该字段。

0kjbasz6

0kjbasz62#

您可以尝试替代运算符//

jq '.timeout //= 200' file.json

相关问题