如何实现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 相关文章推荐
firefo xml 读写实现js代码
Jun 11 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
Dec 19 Javascript
js实现俄罗斯方块小游戏分享
Jan 31 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
Aug 08 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 Javascript
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性能分析工具XHProf安装使用教程
2015/05/13 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
python3 线性回归验证方法
2019/07/09 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
程序员机试试题汇总
2012/03/07 面试题
大专生自我鉴定怎么写
2014/09/16 职场文书
单位证明范文
2015/06/18 职场文书
海底两万里读书笔记
2015/06/26 职场文书