代码之家  ›  专栏  ›  技术社区  ›  ceving

如何使用JQ变量作为对象键?

  •  0
  • ceving  · 技术社区  · 6 年前

    当我引用密钥时,JQ不会对其进行评估:

    $ echo value | jq -sR --arg key a '{"$key": .}'
    {
      "$key": "value\n"
    }
    

    当我不引用它时,JQ报告了一个语法错误:

    $ echo value | jq -sR --arg key a '{$key: .}'
    jq: error: syntax error, unexpected ':', expecting '}' (Unix shell quoting issues?) at <top-level>, line 1:
    {$key: .}     
    jq: 1 compile error
    

    正确的语法是什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   peak    6 年前

    {($key): .}
    

    事实上,每当用冒号指定键值对时,除非键是JSON字符串常量,否则它必须用括号括起来。