Json 数据通用提取工具,使用 HTML Javascript [单文件离线版] - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
9yue

Json 数据通用提取工具,使用 HTML Javascript [单文件离线版]

  •  
  •   9yue 2023 年 6 月 26 日 1754 次点击
    这是一个创建于 1033 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题来源,作者使用 Golang 实现的一款通用型 JSON 数据提取工具,支持自动识别 JSON 数据节点并有序提取为 CSV 文件。

    看到评论回复说 html 单文件,自带 UI....

    功能已实现,界面缺少美化,但小巧,分析给需要的朋友

    Gitee 链接

    Json2Csv 使用简介

    1. 数据路径:设置 Json 中数据所处路径,如'root.topics.data' 'data.items' ...

    2. 字段解析:为空则为全量解析,自动识别字段头。可自定义 排序、映射、按需导出 csv 文件。

      • 假设数据
        • [{"id":1,"name":"张三","age":19},{"id":2,"name":"李四","age":20}]
      • 按需排序 字段名逗号隔开(支持,隔开的字符串 /数组格式)
        • name,id,age / ["age","name","id"]
      • 字段映射 csv 头 排序+按需导出 ,移除 id 列
        • {name:"名字",age:'年龄'}
    3. 添加 csv 头:选择框 csv 第一行是否包含字段信息。

    支持以下常见 JSON 数据格式:

    1.任意多级节点下的数组数据

    {"data":{"items":[{"title":"one","price":23},{"title":"two","price":92},{"title":"three","price":5623}]}} 

    2.兼容处理数据区域非数组结构而是一个对象的情况

    {"data":{"items":{"1":{"title":"one","name":"test1"},"2":{"title":"two","name":"test2"},"3":{"title":"three","name":"test3"}}}} 

    数据位于"data.items"多级节点下,则填写 [数据路径] ,如data.items

    本地测试,秒级处理 20M json 文件,Chrome 版本 114.0.5735.134

    第 1 条附言    2023 年 6 月 27 日

    支持非严格的JSON数据,字段名可 不加双引号 ""

    使用JS 动态创建函数,会遇到和 eval() 类似的的安全问题和(相对较小的)性能问题。与 eval() 不同的是,Function 构造函数创建的函数只能在全局作用域中运行。 MDN Function介绍

    1.{title: "two", 'price': 92} 2.{data: {items: [{title: "one",price: 23},{title: "two", 'price': 92}]}} /** * 使用动态函数实现 * @param str * @returns {null|*} */ function parseJson2(str) { try { return new Function('"use strict"; return '+str)(); } catch (e) { console.warn("解析处理失败", e); return null; } } 
    第 2 条附言    2023 年 6 月 27 日

    支持多个 api地址发起Ajax get请求处理数据。(注:跨域请求需关闭 浏览器同源策略)

    8 条回复    2023-07-11 10:48:51 +08:00
    faketemp
        1
    faketemp  
       2023 年 6 月 26 日 via iPhone
    继续 不要停 卷起来 bros)o
    9yue
        2
    9yue  
    OP
       2023 年 6 月 27 日
    @faketemp 原本打算仅回帖,响应有需要的哥们,但是刚进组织不足 15 天,不允许回复,试了下可以发帖, 晕~~
    haoxuexiaoyao
        3
    haoxuexiaoyao  
       2023 年 6 月 27 日
    有没有循环网页 json 链接转换的方式
    9yue
        4
    9yue  
    OP
       2023 年 6 月 27 日
    @haoxuexiaoyao 会 html js 的话,通过 ajax 请求 连接,拿到 json 数据,使用此工具的 JS 方法 很简单就可以实现此功能。
    haoxuexiaoyao
        5
    haoxuexiaoyao  
       2023 年 6 月 27 日
    有没有 python 里面这样类似好用的 哈哈 经常用 python 处理 有的挺麻烦处理
    9yue
        6
    9yue  
    OP
       2023 年 6 月 27 日
    @haoxuexiaoyao 我可以稍后在这上面 加上你说的功能。python 处理这种数据,能自己会编码 也是 so easy, 不然就看 能否 找到现成的轮子。
    wxf666
        7
    wxf666  
       2023 年 7 月 6 日
    这个 json 转换不对呀:

    ```json
    [{"a": 1, "b": [2, 3, 4]}, {"a": 5, "c": 6}]
    ```

    有两个问题:

    1. 第一行的 b 数组消失了,变成了 2
    2. 第二行的 c 没有解析
    9yue
        8
    9yue  
    OP
       
    @wxf666 谢谢测试,这个可以使用 [其他选项]---->[字段解析] 来解决,定义要解析的 key 及顺序。如:c,b,a 或需要头字段映射可:{c:'字段 C',a:'字段 A',b:'字段 B'} 。 (最新版 修复了 逗号 引起跨列的 bug)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2882 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 13:06 PVG 21:06 LAX 06:06 JFK 09:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86