通过CLI将JSON转换为CSV

pobjuy32  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(96)

我正在使用API从NetFlow Analyzer获取数据。我得到一个JSON文件格式如下:

{"startTime":"2017-12-29 11:58","resultVector":[{"port":"*","app":"Unknown_App","dscpCode":"0","traffic":"4.77 MB","dscp":"Default","src":"20.xx.xx.2","dst":"10.xx.xx.1","dstport":"*","prot":"Unknown"}],"Type":"DestinationIN","devDetails":{"deviceID":"5000006","Total":"4.77 MB"},"TimeZone":"America/Chicago","endTime":"2018-01-05 11:58"}

我一直在尝试使用在github上找到的json2csv(https://github.com/jehiah/json2csv),并成功地使用了不同的API和JSON输出格式。当我运行

json2csv -k port,app,dscpCode,traffic,dscp,src,dst,dstport,prot -i filein.json -o fileout2.csv

我得到一个csv文件,里面只有“,"。我尝试获取的是流量、源IP和目的IP。
运行

json2csv -k startTime,resultVector -i filein.json -o fileout2.csv

给我这个输出,而关闭,它不是csv真的

2017-12-29 11:58,[map[dscpCode:0 src:20.xx.xx.2 dst:10.xx.xx.1 prot:Unknown port:* app:Unknown_App dstport:* traffic:4.77 MB dscp:Default]]

检查了一些报告这是有效的RFC 4627 JSON的在线网站。还有谁熟悉json2csv,或者我可以在脚本中使用的另一个Linux cli工具来转换?

nhjlsmyf

nhjlsmyf1#

对于**jq**处理器来说,这是一个很好的工作:

jq -r '.resultVector[] | [.traffic, .src, .dst] | @csv' filein.json > fileout2.csv

最终fileout2.csv内容:

"4.77 MB","20.xx.xx.2","10.xx.xx.1"
5hcedyr0

5hcedyr02#

这是另一个用于从JSON转换为CSV的CLI工具:

https://github.com/luca-vercelli/json2csv

它可以解析嵌套的JSON。
这是OP数据的输出:

startTime,Type,devDetails-deviceID,devDetails-Total,TimeZone,endTime,resultVector-port,resultVector-app,resultVector-dscpCode,resultVector-traffic,resultVector-dscp,resultVector-src,resultVector-dst,resultVector-dstport,resultVector-prot
2017-12-29 11:58,DestinationIN,5000006,4.77 MB,America/Chicago,2018-01-05 11:58,*,Unknown_App,0,4.77 MB,Default,20.xx.xx.2,10.xx.xx.1,*,Unknown
des4xlb0

des4xlb03#

通常我也更喜欢工具包

如果你想快速地将一些json格式转换成csv,你也可以 checkout 这个:
https://json-csv.com/
提供文件上传以及复制粘贴快速的结果。

相关问题