如何用JQ按JSON的name字段是否含指定字符串动态添加键值对?
问题根因
你编写的JQ语句使用==做全值匹配,仅当name字段完全等于字符串random时才会触发值为1的分支,不符合「判断是否包含子串」的需求。
正确处理语句
JQ内置的contains()函数可用于判断子串存在性,同时可以直接为新字段赋值,无需使用冗余的合并对象写法,正确语句如下:
.Contains = if (.name | contains("random")) then 1 else 0 end
执行示例
如果你的JSON数据存储在input.json文件中,执行以下Shell命令即可得到预期输出:
jq '.Contains = if (.name | contains("random")) then 1 else 0 end' input.json
内容的提问来源于stack exchange,提问作者Fight Daily
相关产品推荐
相关产品推荐

