我正在使用一个api从netflow分析器获取数据。我得到一个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]]

检查了一些在线站点,报告这是一个有效的RFC4627JSON。其他熟悉json2csv的人,或者我可以在脚本中使用的其他linux cli工具?

最佳答案

对于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"

关于json - 通过cli将JSON转换为CSV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48120920/

10-15 06:34