如何实现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 相关文章推荐
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
Vue.js每天必学之过渡与动画
Sep 06 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
Jan 19 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
Oct 16 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
Oct 24 Javascript
微信小程序实现页面监听自定义组件的触发事件
Nov 01 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安装为Apache DSO
2006/10/09 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
PHP自定义多进制的方法
2016/11/03 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
jquery 插件开发备注
2010/08/27 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
原生js实现分页效果
2020/09/23 Javascript
[58:23]LGD vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python求pi的方法
2014/10/08 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
秋季开学典礼主持词
2014/03/19 职场文书
班组长安全工作职责
2014/07/15 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2014年村官工作总结
2014/11/24 职场文书
三峡导游词
2015/01/31 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB