使用jq将json转换为csv,数组嵌套在数组中
如何使用jq将这个json数组展平并写入csv文件,使每一行包含所有字段,即 我对jq有点不熟悉,但从这个开始,它没有捕获内部嵌套数组使用jq将json转换为csv,数组嵌套在数组中,json,nested,export-to-csv,jq,Json,Nested,Export To Csv,Jq,如何使用jq将这个json数组展平并写入csv文件,使每一行包含所有字段,即 我对jq有点不熟悉,但从这个开始,它没有捕获内部嵌套数组 jq-r'([0]|键未排序)作为$keys |$keys,映射([[.$keys[]])[]' [ { "name":"PM2.5", "unit":"ug/m3", "values":[ {
jq-r'([0]|键未排序)作为$keys |$keys,映射([[.$keys[]])[]'
[
{
"name":"PM2.5",
"unit":"ug/m3",
"values":[
{
"timestamp":"2020-11-16T13:10:21.135Z",
"value":3.696
},
{
"timestamp":"2020-11-16T13:10:31.649Z",
"value":3.696
},
{
"timestamp":"2020-11-16T13:10:42.35Z",
"value":3.696
},
{
"timestamp":"2020-11-16T13:10:52.953Z",
"value":3.696
}
]
},
{
"name":"PM10",
"unit":"ug/m3",
"values":[
{
"timestamp":"2020-11-16T13:10:21.135Z",
"value":7.596
},
{
"timestamp":"2020-11-16T13:10:31.649Z",
"value":7.596
},
{
"timestamp":"2020-11-16T13:10:42.35Z",
"value":7.596
},
{
"timestamp":"2020-11-16T13:10:52.953Z",
"value":7.596
}
]
}
]
按如下方式发送到csv:
"name", "unit", "timestamp", "value"
"PM2.5", "ug/m3", "2020-11-16T13:10:21.135Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:31.649Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:42.35Z", 3.696
"PM2.5", "ug/m3", "2020-11-16T13:10:52.953Z", 3.696
"PM10", "ug/m3", "2020-11-16T13:10:21.135Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:31.649Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:42.35Z", 7.596
"PM10", "ug/m3", "2020-11-16T13:10:52.953Z", 7.596
$jq-r'
[[“名称”、“单位”、“时间戳”、“值”]],
[ .[]
|[.名称,.单位]+
(.values[]|[.timestamp,.value])]
| .[]
|@csv'input.json
“名称”、“单位”、“时间戳”、“值”
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:21.135Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:31.649Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:42.35Z”,3.696
“PM2.5”,“微克/立方米”,“2020-11-16T13:10:52.953Z”,3.696
“PM10”,“微克/立方米”,“2020-11-16T13:10:21.135Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:31.649Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:42.35Z”,7.596
“PM10”,“微克/立方米”,“2020-11-16T13:10:52.953Z”,7.596
构建一个数组数组,每行一个,包括一个标题行,然后将它们全部格式化为CSV记录。@Shawn yes抱歉试图添加,但由于堆栈溢出而被标记为
,我添加了一个示例now@Shawn是的,你是对的,下面是一个最简单的例子。由于没有我想要的输出格式,我改进了这个问题。这个问题可以简化(并且更有效),因为不需要最后的。[],如下:'[“名称”,“单位”,“时间戳”,“值”],([]|[.name,.unit]+(.value[]|[.timestamp,.value])@csv'