用变量键名重构jq?

时间:2017-05-31 20:29:20

标签: function key refactoring jq

有没有办法将jq重构为函数?

在重构之前:

jq ' .them ."keyName" ' ./some.json

重构后:

def getThese(x): .them .$x;
〜/ .jq

中的

然后用...来调用它。

jq ' getThese("keyName") as $i | $i ' ./some.json

上面的重构似乎不起作用(有办法吗?)

1 个答案:

答案 0 :(得分:1)

  1. 如果y是变量,则缩写'.x.y'将不起作用。使用语法'.x | 。[y]'而不是。

  2. 'E as $ i |在这种情况下,$ i'可以写成'E'。

  3. 您的定义应该是:

  4. def getThese(x): .them | .[x];
    

    或具有不同的语义(并且需要最新版本的jq):

    def getThese($x): .them | .[$x];
    
    1. 另一种方法是将getThem定义为:
    2. def getThem(f): .them | f;
      

      这将允许您为具有普通名称的键写getThem(.keyName)