如何实现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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
jquery 问答知识整理
Feb 11 Javascript
javascript XMLHttpRequest对象全面剖析
Apr 24 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 Javascript
JavaScript 异常处理 详解
Feb 06 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
Javascript函数式编程简单介绍
Oct 11 Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 Javascript
探究JavaScript中的五种事件处理程序方式
Dec 07 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
2019/08/01 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
大一自我鉴定范文
2013/12/27 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
德能勤绩工作总结
2015/08/11 职场文书