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
배열에 이미 존재합니다 .