JSON 파일이 있습니다.
{
"foo": "xxx",
"bar": ["yyy","zzz"]
}
JQ를 사용하여 다음과 같이 변환하고 싶습니다.
xxx yyy,zzz
나는 다양한 것을 시도했고 내가 얻을 수있는 가장 가까운 것은 :
▶ cat xx.json | jq -r 'to_entries[] | if (.value | type)=="string" then (.value) else (.value | join(",")) end'
xxx
yyy,zzz
저는 JSON 파일의 키 이름을 미리 알지 못하며, 키 to_entries
별로 정렬 된 순서대로 항목을 출력하는 동작에 의존하고 있습니다 (누군가이 작업을 수행 할 방법을 생각하고있는 경우에만) 결과적으로 출력이 비 결정적으로 정렬됩니다).
JQ 원 라이너를 사용하여이를 수행하는 간결한 방법이 있습니까?
예 :
<file jq -r '[.foo,(.bar|join(","))]|join(" ")'
같은 줄에있는 순서로 두 번 .foo
및 .bar
필드 만 조인 합니다.
키 이름을 모르는 경우 다음을 사용할 수 있습니다.
<file jq -r 'to_entries|map(.value|[strings?//.[]]|join(","))|join(" ")'
이 사용하는 것을 제외하고는, 솔루션에 가까운 strings
기능과 조작자 내장 //
하고 ?
사용 a 피하기 if ... then ...
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다