有没有办法将jq
重构为函数?
在重构之前:
jq ' .them ."keyName" ' ./some.json
重构后:
def getThese(x): .them .$x;
〜/ .jq 中的
然后用...来调用它。
jq ' getThese("keyName") as $i | $i ' ./some.json
上面的重构似乎不起作用(有办法吗?)
答案 0 :(得分:1)
如果y是变量,则缩写'.x.y'将不起作用。使用语法'.x | 。[y]'而不是。
'E as $ i |在这种情况下,$ i'可以写成'E'。
您的定义应该是:
def getThese(x): .them | .[x];
或具有不同的语义(并且需要最新版本的jq):
def getThese($x): .them | .[$x];
getThem
定义为:
def getThem(f): .them | f;
这将允许您为具有普通名称的键写getThem(.keyName)
。