当我引用密钥时,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
正确的语法是什么?
答案 0 :(得分:2)
使用变量指定键名时,必须将其括在括号中:
{($key): .}
实际上,每当用冒号指定键/值对时,除非键是JSON字符串常量,否则必须将其括在括号中。