와 나는 JSON의이 샘플이 있습니다수정 개체 속성 조건부 JQ
[
{
"name": "val1",
"expire": { "$value": 10 }
},
{
"name": "val2",
"expire": 20
},
{
"name": "val3"
}
]
을 그리고 난 JQ와 함께이 양식으로 변환 할 :
나는 그것이 경우의 발견했습니다[
{
"name": "val1",
"expire": 10
},
{
"name": "val2",
"expire": 20
},
{
"name": "val3",
"expire": null
}
]
모든 -then-else,하지만 올바른 표현을 만드는 법을 알지 못하는 것 같습니다. 유형 검사에 따라
조건, 그것은 올바른 방법처럼 보이지만 단지, 내가 그것을 해결하는 방법을 모른다 - 시간 오류 반환 "컴파일"
"$value"
검사를 기반으로
.[] | { name, expire: (if .expire then (if type(.expire) == "number" then .expire else .expire."$value" end) else null end) }
조건, 어떻게 든 두 번째 객체를 필터링 :
내가 알고있는 것처럼.[] | { name, expire: (if .expire then (if .expire."$value"? then .expire."$value" else .expire end) else null end) }
, 결과에서 오류로 인해 제거 된 두 번째 목적은 .expire."$value"?
로 확인할 여기에서 내부 경우 문제, 오류가 발생하고 객체입니다.
map(.expire |= if type == "object" then .["$value"]
elif type == "number" then . else null end)
고마워요! 그것은 작동합니다 :) –