我有一个JSON
对象 {"b":1,"c":2}
,并想通过名为xyz
的键将该对象放在该对象下。
但是,键名来自shell变量。因此,换句话说,我首先需要获取密钥名称,然后在其下放{"b":1,"c":2}
,以便结果如下:
{
"xyz": {
"b": 1,
"c": 2
}
}
我提出了以下声明。它可以完成工作,但是想知道是否有消除临时new
条目的更有效方法。
jq -n --arg a "xyz" '{"b":1,"c":2} as $new | {$new} | with_entries(if .key == "new" then .key = $a else . end)'
答案 0 :(得分:1)
您可以按照以下说明非常简单
jq -n --arg a "xyz" '{ ($a): { "b": 1 ,"c": 2 } }'
或包含标准输入内容
echo '{ "b": 1 ,"c": 2 }' | jq -n --arg a "xyz" '{ ($a): inputs }'
或不包含-n
echo '{ "b": 1 ,"c": 2 }' | jq --arg a "xyz" '{ ($a): . }'
或同时使用键名和对象可配置
jq -n --arg k "xyz" --argjson v '{ "b": 1 ,"c": 2 }' '{ ($k): $v }'