如何将json变量附加到另一个?



我想避免使用JSON文件和使用变量,但它不起作用

element='{"x": "zero"}'
example='{
"a": "one",
"b": "two",
"c": "three",
}'
jq -s '.[0] * .[1]' element.json example.json

如果JSON文件的内容与var的单引号内的内容完全相同,则按预期工作。但我也希望元素是第一个(对于*,它不是第一个,对于+=,它是另一个对象)

如果我用$element$example替换文件名,它会失败(期望一个文件)

我试过了:

jq --argjson el "$element" --argjson ex "$example" '$el += $ex'

却写着jq: invalid JSON text passed to --argjson。我不明白。这些变量似乎是正确的JSON。

我只想要这个输出,"x"首先,使用变量而不是文件:

{
"x": "zero",
"a": "one",
"b": "two",
"c": "three",
}

使用像这样的注释建议可以工作

element='{"x":"zero"}'
example='{
"a":"one",
"b":"two",
"c":"three"
}'
jq -n --argjson el "$element" --argjson ex "$example" '$el + $ex'

最新更新