如何实现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 金额文本框实现代码
Feb 14 Javascript
javascript利用控件对windows的操作实现原理与应用
Dec 23 Javascript
前台js改变Session的值(用ajax实现)
Dec 28 Javascript
判断ie的两种简单方法
Aug 12 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
详解JavaScript中getFullYear()方法的使用
Jun 10 Javascript
Javascript实现获取及设置光标位置的方法
Jul 21 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 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生成文件
2007/01/15 PHP
Zend Guard一些常见问题解答
2008/09/11 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python实现图像几何变换
2015/07/06 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python求最大值最小值方法总结
2019/06/25 Python
python tornado修改log输出方式
2019/11/18 Python
python 画函数曲线示例
2019/12/04 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
Python如何操作docker redis过程解析
2020/08/10 Python
营销专业应届生求职信
2013/11/26 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
维稳工作承诺书
2015/01/20 职场文书
社区重阳节活动总结
2015/03/24 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏