使用 jq 追加 json 数组
append json array using jq
我有一个 json 文件,我正在从 consul 获取它,结果非常简单:
[ { "name" : Jon", "class" : "senior" } ]
我想更新数组 json:
{ "name" : santa", "class" : "christmas" }
输出应该是:
[ { "name" : Jon", "class" : "senior" }, { "name" : santa", "class" : "christmas" } ]
这看起来很简单,但我现在做不到。
这就是我一直在尝试的 jq
:
JSON=[{ "name" : Jon", "class" : "senior" }]
echo $JSON | jq '.[] += { "new_key" : "new_value" }'
我在 Whosebug 上遵循了一些答案,但其中大部分都是关于添加单个元素的。
您的脚本有几个问题。一般来说,这应该有效(但在某些层面上仍需要改进):
JSON='[{"name": "Jon", "class": "senior"}]'
echo "$JSON" | jq '. += [{"new_key": "new_value"}]'
[
{
"name": "Jon",
"class": "senior"
},
{
"new_key": "new_value"
}
]
这个问题可能与 重复。
无论如何,作为一种捷径,这里是你如何在不通过管道传输源 JSON 数组的情况下做到这一点:
JSON='[{"name": "Jon", "class": "senior"}]'
jq --null-input --argjson a "$JSON" '$a + [{"name" : "santa", "class" : "christmas" }]'
我有一个 json 文件,我正在从 consul 获取它,结果非常简单:
[ { "name" : Jon", "class" : "senior" } ]
我想更新数组 json:
{ "name" : santa", "class" : "christmas" }
输出应该是:
[ { "name" : Jon", "class" : "senior" }, { "name" : santa", "class" : "christmas" } ]
这看起来很简单,但我现在做不到。
这就是我一直在尝试的 jq
:
JSON=[{ "name" : Jon", "class" : "senior" }]
echo $JSON | jq '.[] += { "new_key" : "new_value" }'
我在 Whosebug 上遵循了一些答案,但其中大部分都是关于添加单个元素的。
您的脚本有几个问题。一般来说,这应该有效(但在某些层面上仍需要改进):
JSON='[{"name": "Jon", "class": "senior"}]'
echo "$JSON" | jq '. += [{"new_key": "new_value"}]'
[
{
"name": "Jon",
"class": "senior"
},
{
"new_key": "new_value"
}
]
这个问题可能与
无论如何,作为一种捷径,这里是你如何在不通过管道传输源 JSON 数组的情况下做到这一点:
JSON='[{"name": "Jon", "class": "senior"}]'
jq --null-input --argjson a "$JSON" '$a + [{"name" : "santa", "class" : "christmas" }]'