我正在尝试解析一个如下所示的 JSON 文件:
[
{
"date":"date1",
"results":
[
{
"field1":"string11",
"field2":"string12",
"field3":"string13",
},
{
"field1":"string21",
"field2":"string22",
"field3":"string23",
}
]
},
{
"date":"date2",
"results":
[
{
"field1":"string11",
"field2":"string12",
"field3":"string13",
},
{
"field1":"string21",
"field2":"string22",
"field3":"string23",
}
]
}
]
我想要这样的输出:
08/05/2024,string11,string12,string13
08/05/2024,string21,string22,string23
09/05/2024,string11,string12,string13
09/05/2024,string21,string22,string23
我尝试过:
jq -Mr '.. | objects | select(has("field1")) | [.field1, .field2, .field3,] | @csv' file.json
并得到:
string11,string12,string13
string21,string22,string23
string11,string12,string13
string21,string22,string23
并尝试过:
jq -r '.[] | [.date, .results[].field1, .results[].field2, .results[].field3] | @csv' file.json
只得到第一行:
date1,string11,string12,string13
date2,string11,string12,string13
我想要:
date1,string11,string12,string13
date1,string21,string22,string23
date2,string11,string12,string13
date2,string21,string22,string23
保存
.date
,并在向下遍历到 .results
后重新使用它,可以使用变量,也可以与另一个过滤器连接。
jq -r '.[] | [.date] + (.results[] | [.[]]) | @csv'
"date1","string11","string12","string13"
"date1","string21","string22","string23"
"date2","string11","string12","string13"
"date2","string21","string22","string23"