我需要从JQ的json文件中获取一些值。我需要获得一个csv(Time,Data.key,Lat,Lng,Qline)
输入:
{
"Time":"14:16:23",
"Data":{
"101043":{
"Lat":49,
"Lng":15,
"Qline":420
},
"101044":{
"Lat":48,
"Lng":15,
"Qline":421
}
}
}
csv的输出示例:
"14:16:23", 101043, 49, 15, 420
"14:16:23", 101044, 48, 15, 421
非常感谢。 我只试过:
cat test.json | jq '.Data[] |[ .Lat, .Lng, .Qline ] | @csv'
答案 0 :(得分:1)
试试这个:
{ Time } + (.Data | to_entries[] | { key: .key | tonumber } + .value)
| [ .Time, .key, .Lat, .Lng, .Qline ]
| @csv
确保使用-r
开关获得原始输出。
答案 1 :(得分:0)
这是另一个不涉及+的解决方案。
{Time, Data: (.Data | to_entries)[]}
| [.Time, (.Data.key | tonumber), .Data.value.Lat, .Data.value.Lng, .Data.value.Qline]
| @csv
答案 2 :(得分:0)
这是另一种解决方案。如果data.json
包含示例数据,则
jq -M -r '(.Data|keys[]) as $k | {Time,k:$k}+.Data[$k] | [.[]] | @csv' data.json
将产生
"14:16:23","101043",49,15,420
"14:16:23","101044",48,15,421