Json
將值添加到 json 數組
我有一些 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 可以做到這一點,但我真的沒有經驗,所以我不知道從哪裡開始。有誰知道如何/如果可以做到這一點?
您可以
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