吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5325|回复: 38
上一主题 下一主题
收起左侧

[原创工具] Json2Csv通用JSON数据批量提取[单文件 离线 高效]

[复制链接]
跳转到指定楼层
楼主
playboysen 发表于 2023-6-28 06:06 回帖奖励
本帖最后由 playboysen 于 2023-7-8 07:53 编辑

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 系统等等  

三、发布更新页

注意下面附件非最新版本,更新请到github下载

Github Releases下载链接


Json2Csv.win.386.zip

805.21 KB, 下载次数: 194, 下载积分: 吾爱币 -2 CB

建议到Github下载新版本

免费评分

参与人数 7吾爱币 +13 热心值 +7 收起 理由
sk8820 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
15235109295 + 1 + 1 谢谢@Thanks!
mmgx2010 + 1 + 1 谢谢@Thanks!
kk7mz + 1 + 1 以前就一直想找一个类似功能的软件,终于找到了!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jyjjf + 1 + 1 谢谢@Thanks!
eer123 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
hoohooo 发表于 2023-7-3 14:50

[JavaScript] 纯文本查看 复制代码
{
    "total": 0,
    "code": 1,
    "msg": "查询成功!",
    "data": [
        {
            "id": 18701,
            "categoryName": "旅游",
            "text": "旅游",
            "scCouponItemGoodsList": [
                {
                    "id": 166719,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 285.0
                },
                {
                    "id": 166721,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 520.0
                },
                {
                    "id": 166718,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 158.0
                },
                {
                    "id": 166720,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 368.0
                }
            ],
            "goodsList": [
                {
                    "id": 166719,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 285.0
                },
                {
                    "id": 166721,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 520.0
                },
                {
                    "id": 166718,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 158.0
                },
                {
                    "id": 166720,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 368.0
                }
            ],
            "goodsNum": 4,
            "children": []
        }, 
        {
            "id": 296,
            "categoryName": "尚赫 TBS V脸",
            "text": "尚赫 TBS V脸",
            "scCouponItemGoodsList": [
                {
                    "id": 11690,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 0.0
                },
                {
                    "id": 11692,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 0.0
                },
                {
                    "id": 11694,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 0.0
                },
                {
                    "id": 11696,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11698,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11700,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12473,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12542,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11691,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11693,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11695,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11697,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11699,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12460,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12495,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12652,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                }
            ],
            "goodsList": [
                {
                    "id": 11690,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11692,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11694,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11696,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11698,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11700,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12473,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12542,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11691,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11693,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11695,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11697,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 11699,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12460,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12495,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    
                    "price": 0.0
                },
                {
                    "id": 12652,
                    "goodsName": "宜昌“两坝一峡”专线一日游(包车和餐)"
                    "goodsType": 0,
                    "price": 0.0
                }
            ],
            "goodsNum": 16,
            "children": []
        }
    ]
}

点评

[md]感谢反馈,测试如下 1. JSON格式有误,goodsName后面缺少","导致解析失败 2. 修复以上JSON后可以这样提取数据 如提取data下面第一个数组元素中scCouponItemGoodsList下数据: `Json2Csv.exe -d data.0.scC  详情 回复 发表于 2023-7-3 21:00
推荐
hoohooo 发表于 2023-7-3 10:21
有个报错 LZ
[Shell] 纯文本查看 复制代码
D:\Downloads\Json2Csv.win.amd64>Json2Csv.win.amd64.exe D:\桌面\getCouponItemGoodsList.json
 > 数据节点: data
 > D:\桌面\getCouponItemGoodsList.json 字段列表: [id categoryName text scCouponItemGoodsList goodsList goodsNum children]
panic: runtime error: slice bounds out of range [:-1]

goroutine 1 [running]:
main.writeArrayToCSVFile(0x9bba58?, {0xc0004938f0?, 0x98deee?}, {0xc0000a0800?, 0x7, 0x8}, {0xc0000131d0, 0x24})
        /home/runner/app/main.go:116 +0x8a9
main.process({0xc000012360, 0x25})
        /home/runner/app/main.go:224 +0x9d6
main.main()
        /home/runner/app/main.go:330 +0x2d1

点评

提供测试json  详情 回复 发表于 2023-7-3 13:55
沙发
jonvi 发表于 2023-6-28 07:55
3#
kenus 发表于 2023-6-28 09:03
谢谢分享!!下载来用,刚好需要。
4#
guo9982 发表于 2023-6-28 09:17
感谢楼主分享。
5#
xiong779 发表于 2023-6-28 10:15
感谢楼主分享
6#
男色经典 发表于 2023-6-28 11:14
感谢楼主分享
7#
a2523188267 发表于 2023-6-28 15:46
谢谢分享。学习了
8#
nbwww 发表于 2023-6-28 17:29
请教一下各位   转换后中文乱码有办法吗?

点评

不存在乱码,你肯定是直接双击用excel打开文件的吧? 文本默认输出UTF8格式,用文本编辑器打开 如果需要用excel查看,建议两种方法: 1.用文本编辑器将csv编码转换为gbk,就可以直接用excel打开查看 2.或者不  详情 回复 发表于 2023-6-28 17:52
9#
 楼主| playboysen 发表于 2023-6-28 17:52 |楼主
本帖最后由 playboysen 于 2023-6-29 06:40 编辑
nbwww 发表于 2023-6-28 17:29
请教一下各位   转换后中文乱码有办法吗?
已升级v0.4版本,解决了这个问题

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
nbwww + 1 + 1 谢谢@Thanks!

查看全部评分

10#
nbwww 发表于 2023-6-28 18:48
playboysen 发表于 2023-6-28 17:52
不存在乱码,你肯定是直接双击用excel打开文件的吧?
文本默认输出UTF8格式,用文本编辑器打开

明白了  感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 17:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表