如何实现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 相关文章推荐
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
一些经常会用到的Javascript检测函数
May 31 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
Bootstrap前端开发案例一
Jun 17 Javascript
js实现多图左右切换功能
Aug 04 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
vue.js 获取当前自定义属性值
Jun 01 Javascript
Angular.js中下拉框实现渲染html的方法
Jun 18 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
Feb 08 Javascript
深入学习JavaScript 高阶函数
Jun 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
php 生成WML页面方法详解
2009/08/09 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
初学JavaScript第二章
2008/09/30 Javascript
JS写的数字拼图小游戏代码[学习参考]
2008/10/29 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
jQuery事件绑定与解除绑定实现方法
2015/04/15 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
JavaScript显式数据类型转换详解
2019/03/18 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
Python中有趣在__call__函数
2015/06/21 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python 解压pkl文件的方法
2018/10/25 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
怎样写留学自荐信
2013/11/11 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
我爱我校演讲稿
2014/05/21 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏