(点击上方公众号,可快速关注)
作者:吕大豹
网址:http://www.cnblogs.com/lvdabao/p/4662612.html
点击“阅读原文”可查看本文网页版
开发一个内部功能时碰到的需求,要把json数据在页面上展示出来,平时浏览器会安装jsonView这样的扩展来看json数据,但是程序要用到的话该怎么办呢?今天在网上搜索的时候,发现了这个小技巧,分享一下。
要用到的核心是JSON.stringify这个函数,没想到吧,平时我们只把它用来序列号json数据。但是这个stringify是有三个参数的,
JSON.stringify(value [, replacer] [, space])
,具体描述请看这里:https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx
我们要用到的就是这第三个参数,它可以指定在生成的字符串中加多少空格,从而生成有一定格式的字符串。生成的字符串我们可以放在<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*:)?|(true|false|null)|-?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));
最终生成的效果就是这样的:
是不是简单而又实用呢~
【今日微信公号推荐↓】
微信号:FrontDev
(长按上图,可自动识别二维码)
「前端大全」专注分享Web前端相关的内容,包括 JavaScript, CSS 和 HTML5 技术文章、工具资源、精选课程和Web技术领域热点资讯。
微信号:iProgrammer
(长按上图,弹出“识别二维码”后可快速关注)
「程序员的那些事」是最受欢迎的程序员、IT 技术和 IT 行业相关的微信公众号之一,分享最新编程技术、经典技术分享、IT 行业动态、热门编程课程、高薪技术职位、程序员的日常,更有难得一见的 IT 相亲活动。
--------------------------------------
商务合作QQ:2302462408
招聘和猎头服务QQ:2302462408
投稿网址:top.jobbole.com