使用jq

时间:2019-09-09 08:59:53

标签: json jq

我尝试用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"}',但是它不能解决我的问题,因为我想将值附加到现有列表中,如示例所示。

1 个答案:

答案 0 :(得分:1)

您需要使用方括号function flipBack() { setInterval(timedFlip.bind(this), 3000); } 代替错误消息中报告的[..]。随便

(..)

此错误行非常冗长,建议您使用正确的语法。 jq --arg key "foo" --arg value "bar" '.[$key] += [$value]' 的重点是我的

#