如何实现json数据可视化详解


Posted in Javascript onNovember 24, 2016

前言

本文介绍的是如何实现json数据可视化,要用到的核心是JSON.stringify这个函数,没想到吧,平时我们只把它用来序列号json数据。

JSON.stringify 函数

将 JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串。

语法

JSON.stringify(value [, replacer] [, space])

参数

value

     必需。  要转换的 JavaScript 值(通常为对象或数组)。 

replacer

     可选。  用于转换结果的函数或数组。 

     如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。  使用返回值而不是原始值。  如果此函数返回 undefined,则排除成员。  根对象的键是一个空字符串:""。 

     如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。  成员的转换顺序与键在数组中的顺序一样。  当 value 参数也为数组时,将忽略 replacer 数组。 

space

     可选。  向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。 

     如果省略 space,则将生成返回值文本,而没有任何额外空格。

     如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。  如果 space 大于 10,则文本缩进 10 个空格。 

     如果 space 是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。

     如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。

返回值

一个包含 JSON 文本的字符串。

json数据可视化

我们要用到的就是这第三个参数,它可以指定在生成的字符串中加多少空格,从而生成有一定格式的字符串。生成的字符串我们可以放在<pre>标签中,这样就能很好的显示缩进。然后呢,为了让生成的数据有高亮效果,我们还可以写一个简单的高亮函数。

基本就是这么个原理啦,请看代码实现:

function output(inp) {
 document.body.appendChild(document.createElement('pre')).innerHTML = inp;
}

function syntaxHighlight(json) {
 json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
 return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
  var cls = 'number';
  if (/^"/.test(match)) {
   if (/:$/.test(match)) {
    cls = 'key';
   } else {
    cls = 'string';
   }
  } else if (/true|false/.test(match)) {
   cls = 'boolean';
  } else if (/null/.test(match)) {
   cls = 'null';
  }
  return '<span class="' + cls + '">' + match + '</span>';
 });
}

var obj = {
 num: 1234,
 str: '字符串',
 arr: [1,2,3,4,5,6],
 obj: {
  name: 'tom',
  age: 10,
  like: ['a', 'b']
 }
};
var str = JSON.stringify(obj, undefined, 4);

output(syntaxHighlight(str));

最终生成的效果就是这样的:

如何实现json数据可视化详解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
获取网站跟路径的javascript代码(站点及虚拟目录)
Oct 20 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
js实现新年倒计时效果
Dec 10 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
Apr 23 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
Jul 18 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
Feb 11 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 Javascript
JavaScript如何判断input数据类型
Feb 06 Javascript
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
BootStrap 可编辑表Table格
Nov 24 #Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 #Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 #Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 #Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 #Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 #Javascript
JS 终止执行的实现方法
Nov 24 #Javascript
You might like
PHP导航下拉菜单的实现如此简单
2013/09/22 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
轻松创建nodejs服务器(5):事件处理程序
2014/12/18 NodeJs
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
深入理解Python对Json的解析
2017/02/14 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
利用Python爬取微博数据生成词云图片实例代码
2017/08/31 Python
Python如何解除一个装饰器
2020/08/07 Python
python Zmail模块简介与使用示例
2020/12/19 Python
python中最小二乘法详细讲解
2021/02/19 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
捷克玩具商店:Bambule
2019/02/23 全球购物
教师自荐信
2013/12/10 职场文书
财会自我鉴定范文
2013/12/27 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
办护照工作证明范本
2014/01/14 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
证婚人婚礼致辞
2015/07/28 职场文书