Json을 열 ID 및 배열로 가져오고 있습니다.
{
"ObjectID": [
0,
1,
2,
3,
4
],
"Name": [
"Apple",
"Orange",
"Grape",
"Banana",
"Jackfruit"
],
"Color": [
"Red",
"Orange",
"Green",
"Yellow",
"null"
],
"Acidity": [
3.9,
3.5,
2.99,
6,
5.0
]
}
다음과 같은 jq를 사용하여 일반 CSV 형식으로 변환하려고 합니다.
ObjectID,Name,Color,Acidity
0,Apple,Red,3.9
1,Orange,Orange,3.5
2,Grape,Green,2.99
3,Banana,Yellow,6
4,Jackfruit,null,5.0
관련 질문JQ를 사용하여 JSON을 헤더와 함께 CSV로 내보내기 . 일반적인 답변을 찾는 것이 좋습니다.
답변1
주어진 답변을 가지고 놀고 나서 내 자신의 질문에 대답하기, json 배열에 대한 일반적인 솔루션
jq --raw-output 'to_entries|map(.key),(map(.value)|transpose[])|@csv'
답변2
이 기능을 사용한 솔루션 transpose
:
<file jq -r '(to_entries|map(.key)),([.ObjectID,.Name,.Color,.Acidity]|transpose|.[])|@csv'
개체 이름을 추출하는 데 사용합니다 to_entries|map(.key)
.
객체 내용은 배열에 저장되고 transpose
d는 각 객체 요소를 포함하는 배열을 얻습니다.
그런 다음 결과는 @csv
연산자를 사용하여 배열에서 쉼표로 구분된 문자열로 변환됩니다.