我尝试用jq构造一个json对象。我从一个空对象开始,想要动态添加键和值。
这有效,但是密钥不是可变的。它固定为“ foo”:
echo '{"foo": ["baz"]}' | jq --arg value "bar" '.foo += [$value]'
预期的输出:
{"foo": ["baz", "bar"]}
我实际上想做的事情是这样的:
echo '{"foo": ["baz"]}' | jq --arg key "foo" --arg value "bar" '.($key) += [$value]'
不幸的是,这不起作用。输出如下:
jq: error: syntax error, unexpected '(' (Unix shell quoting issues?) at <top-level>, line 1:
.($key) += [$value]
jq: error: try .["field"] instead of .field for unusually named fields at <top-level>, line 1:
.($key) += [$value]
jq: 2 compile errors
我找不到解决方案或想办法。
我知道这可行:jq --null-input --arg key foo '{($key): "bar"}'
,但是它不能解决我的问题,因为我想将值附加到现有列表中,如示例所示。
答案 0 :(得分:1)
您需要使用方括号function flipBack() {
setInterval(timedFlip.bind(this), 3000);
}
代替错误消息中报告的[..]
。随便
(..)
此错误行非常冗长,建议您使用正确的语法。 jq --arg key "foo" --arg value "bar" '.[$key] += [$value]'
的重点是我的
#