如何实现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 相关文章推荐
FormValid0.5版本发布,带ajax自定义验证例子
Aug 17 Javascript
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
jquery实现table鼠标经过变色代码
Sep 25 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
Javascript如何判断数据类型和数组类型
Jun 22 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
JS实现最简单的冒泡排序算法
Feb 15 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
vue组件横向树实现代码
Aug 02 Javascript
JavaScript实现音乐导航效果
Nov 19 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中的日期及时间
2006/11/23 PHP
上传多个文件的PHP脚本
2006/11/26 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
php命令行模式代码实例详解
2021/02/26 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python清除函数占用的内存方法
2018/06/25 Python
python 图像平移和旋转的实例
2019/01/10 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
教你如何编写、保存与运行Python程序的方法
2019/07/12 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
python中pyqtgraph知识点总结
2021/01/26 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
婴儿地球:Baby Earth
2018/12/25 全球购物
图书馆志愿者活动总结
2014/06/27 职场文书
会员卡清退活动总结
2014/08/27 职场文书
班主任先进事迹材料
2014/12/17 职场文书
诚信承诺书
2015/01/19 职场文书
职称评定个人总结
2015/03/05 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
DQL数据查询语句使用示例
2022/12/24 MySQL