[英]How to convert a hash of an array of array of hashes JSON input into CSV using jq?
I want to convert the following JSON content stored in a file input.json我想转换以下 JSON 内容存储在文件 input.json
{
"results": [
[
{
"field": "field1",
"value": "value1-1"
},
{
"field": "field2",
"value": "value1-2"
},
{
"field": "field3",
"value": "value1-3"
}
],
[
{
"field": "field1",
"value": "value2-1"
},
{
"field": "field2",
"value": "value2-2"
},
{
"field": "field3",
"value": "value2-3"
}
],
[
{
"field": "field1",
"value": "value3-1"
},
{
"field": "field2",
"value": "value3-2"
},
{
"field": "field3",
"value": "value3-3"
}
]
]
}
into a CSV output进入 CSV output
"field1","field2","field3"
"value1-1","value1-2","value1-3"
"value2-1","value2-2","value2-3"
"value3-1","value3-2","value3-3"
The closest jq expression I've come up with is this:我想出的最接近的 jq 表达式是:
$ cat input.json | jq -r '.results | .[] | map(.field), map(.value) | @csv'
"field1","field2","field3"
"value1-1","value1-2","value1-3"
"field1","field2","field3"
"value2-1","value2-2","value2-3"
"field1","field2","field3"
"value3-1","value3-2","value3-3"
which is still not correct.这仍然不正确。 How should I write the jq expression to get the desired CSV output?
我应该如何编写 jq 表达式以获得所需的 CSV output?
You are feeding .[]
into map(.field)
as well as map(.value)
.您正在将
.[]
输入map(.field)
以及map(.value)
。
Use map(.field)
only on the first
item, and map(.value)
on all items .[]
:仅在
first
项上使用map(.field)
(.field),在所有项上使用map(.value)
.[]
:
jq -r '.results | (first | map(.field)), (.[] | map(.value)) | @csv' input.json
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.