如何实现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 相关文章推荐
js中Math之random,round,ceil,floor的用法总结
Dec 26 Javascript
jquery统计用户选中的复选框的个数
Jun 06 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
JavaScript手机振动API
Jun 11 Javascript
基于JavaScript实现添加到购物车效果附源码下载
Aug 22 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
Dec 08 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
js中的屏蔽的使用示例
2013/07/30 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python远程邮件控制电脑升级版
2019/05/23 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
python 通过exifread读取照片信息
2020/12/24 Python
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
函授本科毕业自我鉴定
2013/10/09 职场文书
护理专业优质毕业生自荐书
2014/01/31 职场文书
项目合作意向书模板
2014/07/29 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
家装电话营销开场白
2015/05/29 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python