如何实现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 相关文章推荐
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
js 火狐下取本地路径实现思路
Apr 02 Javascript
js之事件冒泡和事件捕获详细介绍
Oct 28 Javascript
Javascript基础_嵌入图像的简单实现
Jun 14 Javascript
Vue.js 父子组件通讯开发实例
Sep 06 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
javascript中数组的常用算法深入分析
Mar 12 Javascript
js实现全选反选不选功能代码详解
Apr 24 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 Javascript
原生js+canvas实现验证码
Nov 29 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
bootstrapValidator自定验证方法写法
2016/12/01 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
全球立体声:World Wide Stereo
2018/09/29 全球购物
COS美国官网:知名服装品牌
2019/04/08 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
税务专业毕业生自荐信
2013/11/10 职场文书
新三好学生主要事迹
2014/01/23 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
主持人大赛开场白
2015/05/29 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python