您的位置:时时app平台注册网站 > web前端 > 简单一招实现json数据可视化

简单一招实现json数据可视化

2019-09-14 00:47

简单的讲一招实现json数据可视化

2015/07/21 · JavaScript · JSON, 数码可视化

原稿出处: 吕大豹   

付出一个里边职能时碰着的急需,要把json数据在页面上展现出来,平常浏览器会安装jsonView那样的扩大来看json数据,然而程序要用到的话该如何是好呢?前些天在网络寻觅的时候,发掘了这几个小技能,分享一下。

要用到的焦点是JSON.stringify那些函数,没悟出吧,常常我们只把它用来体系号json数据。不过这几个stringify是有多少个参数的,

JavaScript

JSON.stringify(value [, replacer] [, space])

1
JSON.stringify(value [, replacer] [, space])

,具体描述请看这里:

小编们要用到的正是那第多个参数,它能够钦点在变化的字符串中增添少空格,进而生成有早晚格式的字符串。生成的字符串大家能够献身<pre>标签中,那样就会很好的显示缩进。然后呢,为了让变化的多少有高亮效果,大家还足以写一个简易的高亮函数。基本正是如此个原理啦,请看代码已毕:

JavaScript

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));

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function output(inp) {
    document.body.appendChild(document.createElement('pre')).innerHTML = inp;
}
 
function syntaxHighlight(json) {
    json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    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));

最终生成的功用正是如此的:

图片 1

是否轻松而又实用吧~

1 赞 1 收藏 评论

图片 2

},

您或然感兴趣的小说:

  • JavaScript中json对象和string对象时期交互转化
  • JS中JSON对象和String之间的互转及管理技能
  • 谈谈JSON对象和字符串之间的相互转变JSON.stringify(obj)和JSON.parse(string)
  • Json对象与Json字符串互转(4种转移格局)
  • JSON字符串转变JSONObject和JSONArray的点子
  • Javascript json object 与string 互相转换的简约完毕

converter.innerHTML = input;
var output = converter.innerText;

复制代码 代码如下:

menuList: [ "menuItem:share:appMessage", "menuItem:share:timeline" ]

function obj2str(o){
var r = [];
if(typeof o =="string") return """ o.replace(/(['"\])/g,"\$1").replace(/(n)/g,"\n").replace(/(r)/g,"\r").replace(/(t)/g,"\t") """;
if(typeof o == "object"){
if(!o.sort){
for(var i in o)
r.push(i ":" obj2str(o[i]));
if(!!document.all && !/^n?functions*toString()s*{n?s*[native code]n?s*}n?s*$/.test(o.toString)){
r.push("toString:" o.toString.toString());
}
r="{" r.join() "}"
}else{
for(var i =0;i<o.length;i )
r.push(obj2str(o[i]))
r="[" r.join() "]"
}
return r;
}
return o.toString();
}

},

i.src = '//m.baidu.com/favicon.ico';

return;

});

});

blankRegExp: function(str) {
if (typeof str != "string")

getUserInfo: function(success) {
var self = this;
var url = location.href;
var wxCode = utils.getQueryString("code");

/*用浏览器内部转变器达成html解码*/

});

// 获取过去的n天

},

//1.第一动态创造四个器皿标签成分,如DIV
var temp = document.createElement ("div");

referrer = '';

wx.showMenuItems({

},

(temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html);

'<': '<',

// [Hack]修改iOS微信浏览器的title

return html_decodes[item];

tjArr = JSON.stringify(dataArr);

return format;

alert("err:" JSON.stringify(err))

},

authType: '1'

/**
* 日期格式化
*

alert('分享参数param==' JSON.stringify(param));

// 决断参数非空

};

imgUrl: param.imgUrl,

return;
} else if (typeof (tmp) == "undefined") {
// undefined

tjT[tjT.length - 1].time = second;
var jsArr = JSON.stringify(tjT);

operatorType: 'operatorType',

operationSystem: 'IOS-test',

$.cookie('tjRefer', getReferrer(), {

HTMLEncode:function (html){

localStorage.setItem("jsArr", tjArr);

}
for ( var k in o) {
if (new RegExp('(' k ')').test(format)) {

}

// 决断微信内置浏览器

window.onbeforeunload = function() {
if ($.cookie('tjRefer') == '') {
var tjT = eval('(' localStorage.getItem("jsArr") ')');
if (tjT) {

return tmp;

},

 

wx.config(config);

},

}

return str.replace(/(&|<|>|"|'| )/g, function(str, item) {

});

});

getBeforeDay: function(date, days) {
var date = date || new Date();

cancel && cancel();

}

return html_encodes[item];

window.alert = function(str) {

success && success();
} else {

// 获取页面停留时间,正视jquery.cookie.js

alert('wxCode==' wxCode);

return (ua.match(/MicroMessenger/i) == "micromessenger");

},

wx.onMenuShareAppMessage({//共享朋友

},

// 检查测量检验段落里空格和换行,转变来html输出

'refer': getReferrer() || document.referrer,

},

expires: 1,

second ;
}, 1000);
var tjArr = localStorage.getItem("jsArr") ? localStorage.getItem("jsArr") : '[{}]';

window.setInterval(function() {

};

},

code: wxCode,

return (context == null || context == "" || context == "undefined") ? "" : context;

referrer = window.top.document.referrer;
} catch (e) {
if (window.parent) {
try {

cancel: function() {

countStayTime: function() {
var second = 0;

success: function() {

htmlDecode: function(str) {
var html_decodes = {

//正则解码

}

},

}

alert('error :' JSON.stringify(res));

'q ': Math.floor((date.getMonth() 3) / 3), //quarter
'S': date.getMilliseconds() //millisecond

});

wx.onMenuShareTimeline({//分享交际圈

i.onload = function() {

alert('验证具名url == ' url)

},

},

var utils = {

title: param.infoTitle,

'url': location.href,

'time': second,

config.debug = true;

type: "post",

};

path: '/'

}
} else {
var tjArr = localStorage.getItem("jsArr") ? localStorage.getItem("jsArr") : '[{}]';
var dataArr = {

}

converter = null;

}

getQueryString: function(name) {
var reg = new RegExp("(^|&)" name "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg); // 获取url中"?"符后的字符串并正则相称
var context = "";
if (r != null) {

//屏蔽alert 弹框

}
reg = null;
r = null;

cancel: function() {

type: 'post',

return new Date(Date.parse(date.toString()) - 86400000 * days);

};

'>':'>',

success: function(data) {
if (data && data.resultCode == '000') {

referrer = window.parent.document.referrer;
} catch (e2) {

}
var standTime = (JSON.parse(localStorage.getItem('jsArr'))).time;

'&':'&',

localStorage.setItem("jsArr", jsArr);

'd ': date.getDate(), //day

// 微信分享

return;
} else if ($.trim(tmp) == "") {
// 空串

console.log('央浼页面报错: ' err);

error: function(err) {

config.jsApiList = [ 'checkJsApi', 'showMenuItems', 'onMenuShareAppMessage', 'onMenuShareTimeline' ];

return str.replace(/(&|<|>|"|'| )/g, function(str, item) {

return "";

}

noAlert : function(){

formatDate: function(date, format) {
var o = {

mCancel && mCancel();

dataType: "JSON",

return result.replace(/s/g, "");// 去除小说中间空格

'h ': date.getHours(), //hour

},

},

},

return output;

},

isWeixin: function() {
var ua = navigator.userAgent.toLowerCase();

}

setTimeout(function() {

}

referrer = document.referrer;

i.remove();
}, 9);

link: param.link, // 分享链接

return referrer;

's ': date.getSeconds(), //second

//多个replace会有bug

'timeOut': Date.parse(new Date()) (second * 1000)

return output;

//2.然后就要更动的字符串设置为那一个因素的innerText(ie支持)可能textContent(火狐,google帮助)

//if(true) return

models: 'models',

wx.error(function(res) {

cutText: function(str, maxLength, showEllipsis) {
if (str.length > maxLength) {
str = str.substr(0, maxLength);
if (showEllipsis) {
str = "...";

alert('userInfo=' JSON.stringify(data));

// 查询字符串

getReferrer: function() {
var referrer = '';
try {

document.title = t;
var i = document.createElement('iframe');

imgUrl: param.imgUrl,

validateBlank: function(tmp) {
if (!tmp && typeof (tmp) != "undefined" && tmp != 0) {
// null

success && success();

appVersion: 'appVersion'

// 转义html为平安文件

data: {

// 裁剪文字,展现...

},

' ':' '

"'":"'",

htmlEncode: function(str) {

}

network: '4G-test',

}

error: function(e) {

shareToWeiXin: function(param, success, cancel, mSuccess, mCancel) {
var self = this;
// this.getContent(utils.getQueryString("infoId"),utils.getQueryString('salesmanId'));

},

title: param.infoTitle,

}
if (referrer === '') {

});

// 获取前多个页面包车型客车url

});

context = r[2];

Backbone.ajax({
url: '/plug/do/A2ATApp/saveCustomerInfo',

delBlankSpace: function(str) {
var str = str.replace(/</?[^>]*>/gim, "");// 去掉全体的html标识
var result = str.replace(/(^s )|(s $)/g, "");// 去掉前后空格

};

//event事件
var EventUtil={

   addHandler:function(element,type,handler){ //添加事件
      if(element.addEventListener){ 
         element.addEventListener(type,handler,false);  //使用DOM2级方法添加事件
      }else if(element.attachEvent){                    //使用IE方法添加事件
         element.attachEvent("on" type,handler);
      }else{
         element["on" type]=handler;          //使用DOM0级方法添加事件
      }
   },  

   removeHandler:function(element,type,handler){  //取消事件
      if(element.removeEventListener){
         element.removeEventListener(type,handler,false);
      }else if(element.detachEvent){
         element.detachEvent("on" type,handler);
      }else{
         element["on" type]=null;
      }
   },

   getEvent:function(event){  //使用这个方法跨浏览器取得event对象
      return event?event:window.event;
   },

   getTarget:function(event){  //返回事件的实际目标
      return event.target||event.srcElement;
   },

   preventDefault:function(event){   //阻止事件的默认行为
      if(event.preventDefault){
         event.preventDefault(); 
      }else{
         event.returnValue=false;
      }
   },

   stopPropagation:function(event){  //立即停止事件在DOM中的传播
                                     //避免触发注册在document.body上面的事件处理程序
      if(event.stopPropagation){
         event.stopPropagation();
      }else{
         event.cancelBubble=true;
      }
   },

   getRelatedTarget:function(event){  //获取mouseover和mouseout相关元素
      if(event.relatedTarget){
         return event.relatedTarget;
      }else if(event.toElement){      //兼容IE8-
         return event.toElement;
      }else if(event.formElement){
         return event.formElement;
      }else{
         return null;
      }
   },

   getButton:function(event){    //获取mousedown或mouseup按下或释放的按钮是鼠标中的哪一个
      if(document.implementation.hasFeature("MouseEvents","2.0")){
         return event.button;
      }else{
         switch(event.button){   //将IE模型下的button属性映射为DOM模型下的button属性
            case 0:
            case 1:
            case 3:
            case 5:
            case 7:
               return 0;  //按下的是鼠标主按钮(一般是左键)
            case 2:
            case 6:
               return 2;  //按下的是中间的鼠标按钮
            case 4:
               return 1;  //鼠标次按钮(一般是右键)
         }
      }
   },

   getWheelDelta:function(event){ //获取表示鼠标滚轮滚动方向的数值
      if(event.wheelDelta){
         return event.wheelDelta;
      }else{
         return -event.detail*40;
      }
   },

   getCharCode:function(event){   //以跨浏览器取得相同的字符编码,需在keypress事件中使用
      if(typeof event.charCode=="number"){
         return event.charCode;
      }else{
         return event.keyCode;
      }
   }

};

desc: param.infoSummary, // 分享描述

/*用浏览器内部调换器完结html转码*/

desc: param.infoSummary, // 共享描述

};

},

});

},

* @param {Date} date 钦赐日期
* @param {String} format
* @returns {String}
* @summary 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
* 年(y)能够用 1-4个占位符,纳秒(S)只可以用 1 个占位符(是 1-3 位的数字)
* @example (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02
* 08:09:04.423 (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18

var url = location.href.split('#')[0];

return;
} else {

});

format = format.replace(RegExp.$1, (date.getFullYear() '').substr(4 - RegExp.$1.length));

link: param.link, // 分享链接

}

tjArr = eval('(' tjArr ')');

},

setTitle: function(t) {

document.body.appendChild(i);

};
if (/(y )/.test(format)) {

$.ajax({
url: '/plug/do/common/weixin/genWxConfig',

dataType: 'json',

return;
} else if (Object.prototype.isPrototypeOf(tmp) && Object.keys(tmp).length === 0) {
// 空对象

data: {
url: url,

'm ': date.getMinutes(), //minute

return standTime; //单位:s

*/

'"':'"',

i.style.display = 'none';

success: function() {

HTMLDecode: function(input) {
var converter = document.createElement("DIV");

mSuccess && mSuccess();

}

},

wx.ready(function() {

success: function(data) {
if (data && data.resultCode === '000') {
var config = data.data.config;

//3.提及底回来那几个因素的innerHTML,即获取通过HTML编码调换的字符串了
var output = temp.innerHTML;
temp = null;

// 删除空白字符串

}

return this.htmlEncode(str).replace(/r{0,}n/g, '<br/>');

return str;

'<':'<',

format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' o[k]).substr(('' o[k]).length));

alert('error==' JSON.stringify(e));

'M ': date.getMonth() 1, //month

return;
} else if (Array.isArray(tmp) && tmp.length === 0) {
// 空数组

'timeIn': Date.parse(new Date()),

// 微信授权

'>': '>',
'"': '"',
"'": "'",
' ': ' '

//return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'").replace(/ /g, " ");
var html_encodes = {
'&': '&',

本文由时时app平台注册网站发布于web前端,转载请注明出处:简单一招实现json数据可视化

关键词: