• 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>  

    效果图

    b81c7995fd35854b88494e2fe9e141fe3e7b4f3d

  • 相关阅读:
    SharePreferences
    Android实现电话录音功能
    Android短信监听实现,及Android4.4之后短信机制变更
    java指纹识别+谷歌图片识别技术_源代码
    找出相似的图片--C#
    vim常用命令整理
    机器学习实战-logistic回归分类
    机器学习实战-朴素贝叶斯垃圾邮件分类
    机器学习实战-随机森林二分类问题
    分类算法
  • 原文地址:https://www.cnblogs.com/dtstack/p/10271112.html
Copyright © 2020-2023  润新知