如何实现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模板实现方法
Apr 27 Javascript
JavaScript 捕获窗口关闭事件
Jul 26 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
javascript实现随时变化着的背景颜色
Apr 02 Javascript
js实现仿Windows风格选项卡和按钮效果实例
May 13 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 Javascript
node.js使用http模块创建服务器和客户端完整示例
Feb 10 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
JS运算符优先级与表达式示例详解
Sep 04 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+Ajax实现表单验证的详解
2013/06/25 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
vue项目优化之通过keep-alive数据缓存的方法
2017/12/11 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Python Property属性的2种用法
2015/06/21 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
StubHub德国:购买和出售门票
2017/09/06 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
体育教师个人的自我评价
2014/02/16 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
会计实训报告范文
2014/11/04 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python