Json2Csv
Golang实现的一款通用型JSON数据提取程序,支持自动识别JSON数据节点并有序提取为CSV文件,基本涵盖所有JSON结构数据提取需求。单文件/无依赖/离线,支持Win/Linux/Mac等各种系统。
Convenient JSON data extraction tool.
一、使用简介
> Json2Csv:请指定JSON格式文件路径(支持批量)...
> Json2Csv [-d data.items] data.json data2.txt
> Json2Csv [-d data.items] [-k title/url] data.json
> Json2Csv [-d data.items] [-i 3] data.json
Usage of Json2Csv.win.amd64.exe:
-d string 设置Json中数据区域所处路径,如'-d root.topics.data'
-i int 指定从第N个对象中提取字段名 (default 1)
-k string 设置Json数据字段名称(分隔符'/'或',',优先级高于-i参数),如'-k title/url/type'
-h 显示帮助
-v 显示版本信息
支持以下常见JSON数据格式:
1.自动提取根/一级节点下的数组数据
[{"ID":0,"Name":"Lucy","Age":17,"Granted":true},{"ID":1,"Name":"Lily","Age":20,"Granted":false}]
{"part":1,"items":[{"title":"one","price":23},{"title":"two","price":92},{"title":"three","price":5623}]}
数据提取命令:Json2Csv test1.json test2.json
拖放json文件到主程序或命令行均可运行,支持多文件批量处理,如JSON数组数据位于根/一级节点下程序可自动检测并提取成同名csv文件
2.手动提取位于任意多级节点下的数组数据
{"data":{"items":[{"title":"one","price":23},{"title":"two","price":92},{"title":"three","price":5623}]}}
数据位于"data.items"多级节点下,-d参数简单指定数据路径即可,如
数据提取命令:Json2Csv -d data.items test.json
测试文件:-d参数 JSON示例
3.手动提取多级节点下的对象数据
{"part":1,"data":{"items":{"1":{"title":"one","name":"test1"},"2":{"title":"two","name":"test2"},{"3":{"title":"three","name":"test3"}}}}
注意数据区域非数组结构而是一个对象,大多数在线网站和json工具都无法解析数据提取,为方便使用一并兼容处理
数据提取命令:Json2Csv -d data.items test.json
4.手动指定字段名/自动从第N个数据块读取字段名
{"status":"ok","data":{"list":[{"uuid":"0DC0002B","title":"前言","is_chapter":1},{"uuid":"8743CB8D","title":"前言讲义","type":"document","length":90,"weight":1,"media_uri":"a6283c64\/document\/BrDM.doc","course_title":"2016年司考","is_chapter":0}]}}
这类非标准json,直接用-d data.list
解析数据默认从第1个数据块读取字段即uuid/title/is_chapter
,导致生成的csv文件缺失大量数据,此时可以设置"-i 2"参数指定从第2个数据块以解析全部字段即uuid/title/type/length/weight/media_uri/course_title/is_chapter
数据提取命令:Json2Csv -d data.items -i 2 test.json
也可以使用-k title/media_uri/course_title
参数手动设置待读取的字段名称,这样导出的数据将只包含title/media_uri/course_title
几列
数据提取命令:Json2Csv -d data.items -k title/media_uri/course_title test.json
二、说明
为什么不用在线服务?
内网/工作数据隐私不能公开;JSON 文件较大(比如超过10M)大多在线服务无法支持。
为什么不用 Pandas 等?
内网 python 和常用库的安装维护等很麻烦; Python 工具只能自己用分享不便,换台机都无法使用;每个 json 都要单独分析结构对应编写测试代码通用性和便利性欠佳; Pandas 默认会导致长数据输出科学计数法等...
为什么不用 utools/jq 等工具?
这些工具提取 json 个别字段数据比较方便,但想批量提取出所有数据就比较麻烦;且使用门槛较高 jq等工具兼容性不佳,比如 json 文件识别报错、不支持 win7 系统等等