Json jq忽略else条款
我希望使用jq搜索和替换基于json行的数据中的特定值,如果匹配为false,则保持对象不变 考虑以下Json jq忽略else条款,json,if-statement,select,jq,Json,If Statement,Select,Jq,我希望使用jq搜索和替换基于json行的数据中的特定值,如果匹配为false,则保持对象不变 考虑以下input.json: {“foo”:{“bar”:“one”} {“foo”:{“bar”:“two”} 我尝试了以下语句,但else子句被忽略,因此不匹配的行将丢失: jq-c'如果(选择(.foo.bar==“一”)),则.foo.bar |==“确定”其他。end'input.json 生成结果: {“foo”:{“bar”:“ok”} 以下命令生成正确的输出: jq-c'(.|
input.json
:
{“foo”:{“bar”:“one”}
{“foo”:{“bar”:“two”}
我尝试了以下语句,但else子句被忽略,因此不匹配的行将丢失:
jq-c'如果(选择(.foo.bar==“一”)),则.foo.bar |==“确定”其他。end'input.json
生成结果:
{“foo”:{“bar”:“ok”}
以下命令生成正确的输出:
jq-c'(.| select(.foo.bar==“one”).foo.bar=“ok”input.json
期望输出:
{“foo”:{“bar”:“ok”}
{“foo”:{“bar”:“two”}
为什么第一个命令无法输出else子句中的对象
. | if .foo.bar == "one" then .foo.bar |= "ok" else . end
select
对于筛选很有用,但是如果没有可选择的内容,它不会返回假值,也不会返回任何内容。这是否回答了您的问题?不,这个答案是使用select,实际上我们只需要使用一个if语句,正如接受的答案所示。谢谢换句话说,如果为空,则1 else 2 end
产生空流。