【问题标题】:Refactoring jq with a variable key name?用变量键名重构 jq?
【发布时间】:2017-05-31 20:29:19
【问题描述】:

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

重构之前:

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

重构后:

def getThese(x): .them .$x;

~/.jq

然后用...调用它

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

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

【问题讨论】:

    标签: function key refactoring jq


    【解决方案1】:
    1. 如果 y 是变量,则缩写“.x.y”将不起作用。使用语法 '.x | .[ y ]' 代替。

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

    3. 您的定义应该是:

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

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

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

    def getThem(f): .them | f;
    

    这将允许您写:getThem(.keyName) 用于具有普通名称的键。

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      相关资源
      最近更新 更多