通过cli将JSON转换为CSV

问题描述 投票:0回答:3

我正在使用 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 开始时间,结果向量 -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 工具来进行转换?

json linux csv command-line-interface
3个回答
12
投票

这对于

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"

0
投票

如果有人感兴趣,我已经编写了另一个 CLI 工具用于从 JSON 到 CSV 的转换。

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

-2
投票

通常我也更喜欢 cli 工具

如果你想快速将一些 json 格式化为 csv,你也可以查看这个:

https://json-csv.com/

提供文件上传以及复制粘贴以快速获得结果。

© www.soinside.com 2019 - 2024. All rights reserved.