json格式化显示样式js代码分享

最近开发中需要在页面展示json。特整理了下代码,送给大家,希望能帮到有同样需求的朋友们。

代码:

<html>
<script src="http://cdn.bootcss.com/jquery/3.0.0-rc1/jquery.min.js"></script>
<body>
	<span class="result"></span>
<script>

//json格式化方法   参数1:json对象,参数2:缩进字符数
var JSONFormat = (function(){
    var _toString = Object.prototype.toString;

    function format(object, indent_count){
        var html_fragment = '';
        switch(_typeof(object)){
            case 'Null' :0
                html_fragment = _format_null(object);
                break;
            case 'Boolean' :
                html_fragment = _format_boolean(object);
                break;
            case 'Number' :
                html_fragment = _format_number(object);
                break;
            case 'String' :
                html_fragment = _format_string(object);
                break;
            case 'Array' :
                html_fragment = _format_array(object, indent_count);
                break;
            case 'Object' :
                html_fragment = _format_object(object, indent_count);
                break;
        }
        return html_fragment;
    };

    function _format_null(object){
        return '<span class="json_null">null</span>';
    }

    function _format_boolean(object){
        return '<span class="json_boolean">' + object + '</span>';
    }

    function _format_number(object){
        return '<span class="json_number">' + object + '</span>';
    }

    function _format_string(object){
        object = object.replace(/\</g,"<");
        object = object.replace(/\>/g,">");
        if(0 <= object.search(/^http/)){
            object = '<a href="' + object + '" target="_blank" class="json_link">' + object + '</a>'
        }
        return '<span class="json_string">"' + object + '"</span>';
    }

    function _format_array(object, indent_count){
        var tmp_array = [];
        for(var i = 0, size = object.length; i < size; ++i){
            tmp_array.push(indent_tab(indent_count) + format(object[i], indent_count + 1));
        }
        return '<span data-type="array" data-size="' + tmp_array.length + '"><i  style="cursor:pointer;" class="fa fa-minus-square-o" onclick="hide(this)"></i>[<br/>'
            + tmp_array.join(',<br/>')
            + '<br/>' + indent_tab(indent_count - 1) + ']</span>';
    }

    function _format_object(object, indent_count){
        var tmp_array = [];
        for(var key in object){
            tmp_array.push( indent_tab(indent_count) + '<span class="json_key">"' + key + '"</span>:' +  format(object[key], indent_count + 1));
        }
        return '<span  data-type="object"><i  style="cursor:pointer;" class="fa fa-minus-square-o" onclick="hide(this)"></i>{<br/>'
            + tmp_array.join(',<br/>')
            + '<br/>' + indent_tab(indent_count - 1) + '}</span>';
    }

    function indent_tab(indent_count){
        return (new Array(indent_count + 1)).join('    ');
    }

    function _typeof(object){
        var tf = typeof object,
            ts = _toString.call(object);
        return null === object ? 'Null' :
            'undefined' == tf ? 'Undefined'   :
                'boolean' == tf ? 'Boolean'   :
                    'number' == tf ? 'Number'   :
                        'string' == tf ? 'String'   :
                            '[object Function]' == ts ? 'Function' :
                                '[object Array]' == ts ? 'Array' :
                                    '[object Date]' == ts ? 'Date' : 'Object';
    };

    function loadCssString(){
        var style = document.createElement('style');
        style.type = 'text/css';
        var code = Array.prototype.slice.apply(arguments).join('');
        try{
            style.appendChild(document.createTextNode(code));
        }catch(ex){
            style.styleSheet.cssText = code;
        }
        document.getElementsByTagName('head')[0].appendChild(style);
    }

    loadCssString(
        '.json_key{ color: #92278f;font-weight:bold;}',
        '.json_null{color: #f1592a;font-weight:bold;}',
        '.json_string{ color: #3ab54a;font-weight:bold;}',
        '.json_number{ color: #25aae2;font-weight:bold;}',
        '.json_link{ color: #717171;font-weight:bold;}',
        '.json_array_brackets{}');

    var _JSONFormat = function(origin_data){
        this.data = JSON.parse(origin_data);
    };

    _JSONFormat.prototype = {
        constructor : JSONFormat,
        toString : function(){
            return format(this.data, 1);
        }
    }

    return _JSONFormat;
  })();

  	//json案例
  	var demoJson = {
	  "A1": "a1",
	  "A11": "a11",
	  "A111_next": [
	    {
	      "B1": "b1",
	      "B11": "b11",
	      "B111_next": [
	        {
	          "C1": "c1",
	          "C11": "c11",
	          "C111_next": []
	        }
	      ]
	    },
	    {
	      "B2": "b2",
	      "B22": "b22",
	      "B222_next": []
	    }
	  ]
	} 

    //将格式化好的json显示到前台页面
    function showJson(demoJson) {
       	var result = new JSONFormat(JSON.stringify(demoJson),4).toString()
        $('.result').html(result);
    }

	showJson(demoJson);

</script>
</body>
</html>

效果图

时间: 2024-11-01 17:20:22

json格式化显示样式js代码分享的相关文章

jQuery Ajax 异步加载显示等待效果代码分享_jquery

AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).它并非一种新的技术,而是以下几种原有技术的结合体. 1) 使用CSS和XHTML来表示. 2) 使用DOM模型来交互和动态显示. 3) 使用XMLHttpRequest来和服务器进行异步通信. 4) 使用javascript来绑定和调用. 通过AJAX异步技术,可以在客户端脚本与web服务器交互数据的过程中使用XMLHttpRequest对象来完成HTTP请求(Reques

浮动的div自适应居中显示的js代码

 这篇文章主要介绍了浮动的div自适应居中显示的js代码,有需要的朋友可以参考一下 当div是浮动的时候浏览器窗口发生变化的时候不能居中显示(因为浮动的时候一般设定的有left或者right值)   可以先用jquery获取外围的div随浏览器变化而变化的宽度(加上监听事件)   之后再获取div的宽度 例如:   代码如下: function autoWidth(){        var bW = $(".call_man").width();//外围的div      var p

利用onMouseOver与onmouseout鼠标变量调用div背景样式js代码

js 利用onMouseOver与onmouseout鼠标变量div背景样式代码 <html xmlns="http://www.jzread.com/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>js 利用onMouseOver与onmouseout

获取内联和链接中的样式(js代码)_javascript技巧

复制代码 代码如下: var head = document.getElementById( "box" ); // alert( head.style.background ) // alert( head.style.cssFloat || head.style.styleFloat ) // 获取float不一样 // head.style.fontSize = "30px" head.style.color = "#f00"; // (t

兼容ie、firefox的图片自动缩放的css跟js代码分享_javascript技巧

这个功能主要是解决内容页中的图片过大撑出,导致页面比较难看,就需要这样的代码,需要的朋友可以参考下 需求:图片width<=600px,height<=800. 1.利用max-width,max-height使图片等比例自动缩放代码: 复制代码 代码如下: img{max-width: 600px;max-height: 800px;} 由于ie6不支持css max-width,max-height,所以在ie6中需要利用javascript脚本来控制大小. 2.用javascript脚本

浮动的div自适应居中显示的js代码_javascript技巧

当div是浮动的时候浏览器窗口发生变化的时候不能居中显示(因为浮动的时候一般设定的有left或者right值) 可以先用jquery获取外围的div随浏览器变化而变化的宽度(加上监听事件) 之后再获取div的宽度 例如: 复制代码 代码如下: function autoWidth(){      var bW = $(".call_man").width();//外围的div     var popWidth = (bW-150)/2    //(150是div的宽度)    $(&q

鼠标悬浮停留三秒后自动显示大图js代码

 鼠标悬浮停留三秒后显示大图,在网页中还是比较实用的 1 <style> 2 *{margin:0;padding:0;list-style-type:none;} 3 img,a{border:0;} 4 .piccon{height:75px;margin:100px 0 0 50px;} 5 .piccon li{float:left;padding:0 10px;} 6 #preview{position:absolute;border:1px solid #ccc;backgroun

鼠标悬浮停留三秒后自动显示大图js代码_javascript技巧

鼠标悬浮停留三秒后显示大图,在网页中还是比较实用的 <style> *{margin:0;padding:0;list-style-type:none;} img,a{border:0;} .piccon{height:75px;margin:100px 0 0 50px;} .piccon li{float:left;padding:0 10px;} #preview{position:absolute;border:1px solid #ccc;background:#333;paddin

当鼠标滑过文本框自动选中输入框内容的JS代码分享_javascript技巧

复制代码 代码如下: <html><head><title>响应鼠标自动选中文本框内容</title></head><body><input id="a" type="text" value="请输入搜索词" onmouseover="selectInputContent(this.id)"/><script type="tex