使用书签将JSON转化成表格,可复制到Excel

现在的网页很多数据都是用JSON文件存储的,但是有时候为了查看数据,或者做报表就必须把它的格式进行转化。最常见的一种形式是把JSON数据转化成<table>……</table>。今天我们讲解的就是在不借助第三方软件的情况下,仅用chrome浏览器来实现这种转化。

知识的要点:1、bookmarklet制作、2、javascript基础;。

使用书签将JSON转化成表格,可复制到Excel

工具/原料

  • Chrome浏览器

  • javascript基础知识

  • 正则表达基础知识

方法/步骤

  1. 1

    bookmarklet其实就是一个收藏夹,其中网址部分是javascript代码。

    使用书签将JSON转化成表格,可复制到Excel

  2. 2

    值得注意的是所有的bookmarklet都要按这个种格式来:javascript:(function(){……})()。在这里的设略号就是用户自己写的代码来实现的功能区。我们写一个名称:test;网址:javascript:(function(){alert('hello')})()。我们来运行下刚才写的这个bookmarklet。会弹出一个对话框显示“hello”

    使用书签将JSON转化成表格,可复制到Excel

  3. 3

    我们既然知道了原理那么就可以利用它来实现更高级一点的功能——实现json转化成表格。

    使用书签将JSON转化成表格,可复制到Excel

  4. 4

    首先我们来写一段代码给数组的原型添加一个toTable的方法。toTable实现了把数据中的集合对象转变成“<table>……</table>”的字符串。

    使用书签将JSON转化成表格,可复制到Excel

  5. 5

    接下来我们是要实现是通过正则提取JSON,并把它转化成数组。正则提取的部分关键点是:document.body.innerHTML.match(/\[.*?\]/igm)[0]。其中/\[.*?\]/igm是一个正则表达。关于正则表达什么写,这个不做细说,自行百度。正则提取的结果是一个字符串:”[……]”。想要把这个结果变成数组需要执行eval函数。这个函数的用法是:eval('(' + document.body.innerHTML.match(/\[.*?\]/igm)[0] + ')')。之后我们就可以用toTable方法了。

    使用书签将JSON转化成表格,可复制到Excel

  6. 6

    我们再执行完toTable的方法之后返回的结果是“<table>……</table>”,我们希望做的是把这个段代码写到一个DIV元素中,那么这个DIV元素就会有一个表格元素。我们只要把这个DIV的布局布置在页面顶层,以带有透明的遮罩形式呈现即可。完整的代码:

    javascript:(function(a,b,c){Array.prototype.toTable=function(){var ar=[];var tab='';var th="";for(i in this[0]){ar.push(i)};th="<tr><th>"+ar.join('</th><th>')+"</th></tr>";this.forEach(function(a){var b=[];for(i in a){b.push(a[i])}tab+="<tr><td>"+b.join('</td><td>')+"</td></tr>"});return("<table border='1px' >"+th+tab+"<table>")};c=b.createElement('div'),c.id='excel',c.setAttribute('style','position:absolute;top:0;left:0;right:0;background:yellow;opacity:0.8'),c.innerHTML=eval('('+document.body.innerHTML.match(/\[.*?\]/igm)[0]+')').toTable(),b.body.appendChild(c)})(window,document);

    使用书签将JSON转化成表格,可复制到Excel

  7. 7

    新建一个bokmarklet,把第六步的代码复制到网址中。

    使用书签将JSON转化成表格,可复制到Excel

  8. 8

    单击texst,即可得到结果。

    使用书签将JSON转化成表格,可复制到Excel

    END

注意事项

  • 以上代码正则表达部分是关键,理解了就能举一反三。

  • 代码适用于JSON文件格式为[{……},{……},{……}]的数据,如果是其他格式,需改写正则表达。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值