如何实现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 相关文章推荐
JavaScript 验证浏览器是否支持javascript的方法小结
May 17 Javascript
javawscript 三级菜单的实现原理
Jul 01 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
Dec 02 Javascript
javascript中[]和{}对象使用介绍
Mar 20 Javascript
JavaScript输出当前时间Unix时间戳的方法
Apr 06 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
js仿拉勾网首页穿墙广告效果
Mar 08 Javascript
vue 实现 tomato timer(蕃茄钟)实例讲解
Jul 24 Javascript
jQuery+ajax读取json数据并按照价格排序示例
Mar 28 jQuery
微信小程序实现日历效果
Dec 28 Javascript
javascript头像上传代码实例
Sep 28 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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
YII实现分页的方法
2014/07/09 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JS作用域链详解
2017/06/26 Javascript
vue-cli项目中怎么使用mock数据
2017/09/27 Javascript
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
python获取文件扩展名的方法
2015/07/06 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python探索之SocketServer详解
2017/10/28 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python实现猜数字小游戏
2020/03/24 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Django用户认证系统 组与权限解析
2019/08/02 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
一套带网友答案的.NET笔试题
2016/12/06 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
自荐信怎么写好
2013/11/11 职场文书
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
小学中队活动总结
2015/05/11 职场文书
拖欠货款起诉状
2015/05/20 职场文书
乱世佳人观后感
2015/06/08 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js