JSONオブジェクトがあり、まだ値がない場合は、値を追加する必要があります。
各オブジェクトは次のとおりですが、各配列(1-5)内のcontact_groupは異なります。
{
"contact_groups": {
"1": [
"/contact_group/78"
],
"2": [
"/contact_group/79"
],
"3": [],
"4": [],
"5": []
}
}
"/contact_group/109"
まだ存在しない場合は、各配列を追加したいので、上記は次のとおりです。
{
"contact_groups": {
"1": [
"/contact_group/78",
"/contact_group/109"
],
"2": [
"/contact_group/79",
"/contact_group/109"
],
"3": [
"/contact_group/109"
],
"4": [
"/contact_group/109"
],
"5": [
"/contact_group/109"
]
}
}
私はjqがこれを行うことができると確信していますが、実際に経験がないので、どこから始めるべきかわかりません。これがどのように達成できるかを知っている人はいますか?
答え1
with_entries()
親要素の関数を使用して、子要素をキー付きペアkey
に変換し、文字列がまだない場合は、配列value
に文字列を追加できます。value
jq '.contact_groups |= ( with_entries( if ( .value | index("/contact_group/109") | not ) then .value += [ "/contact_group/109" ] else . end ) )'
組み込み関数はwith_entries(..)
実行するのが短いですto_entries | map | from_entries
。index("/contact_group/109") | not
このセクションでは、文字列が次の場合にエントリが追加されることを保証します。いいえ.value
配列にすでに存在します。