json用jq解析并转换为csv

时间:2015-07-09 14:54:29

标签: json csv jq

我需要从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' 

3 个答案:

答案 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