博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON辅助格式化
阅读量:5840 次
发布时间:2019-06-18

本文共 5636 字,大约阅读时间需要 18 分钟。

  hot3.png

平时服务器端开发人员写好后台之后一般写一份简单的接口说明页面,类似:

由于结果是以json形式返回的,不容易一眼辨认,所以为了方便,对结果进行了简单的处理:
1,由于不能控制返回结果的页面,所以直接对请求进行了拦截并用ajax方式进行重发。
2,格式化返回的json结果,非json结果直接显示。
注:ubuntu下的chromium在处理overflow的问题上貌似有点不一样,所以结果容器写得有点罗嗦。
具体例子:
    

结果:

JSONFormat.js内容:

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 'null';    }    function _format_boolean(object){        return '' + object + '';    }    function _format_number(object){        return '' + object + '';    }    function _format_string(object){        if(0 <= object.search(/^http/)){            object = '' + object + ''        }        return '"' + object + '"';    }    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 '[\n'            + tmp_array.join(',\n')            + '\n' + indent_tab(indent_count - 1) + ']';    }    function _format_object(object, indent_count){        var tmp_array = [];        for(var key in object){            tmp_array.push( indent_tab(indent_count) + '"' + key + '":' +  format(object[key], indent_count + 1));        }        return '{\n'            + tmp_array.join(',\n')            + '\n' + indent_tab(indent_count - 1) + '}';    }    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: purple;}',        '.json_null{color: red;}',        '.json_string{ color: #077;}',        '.json_link{ color: #717171;}',        '.json_array_brackets{}');    var _JSONFormat = function(origin_data){        this.data = 'string' != typeof origin_data ? origin_data :            JSON && JSON.parse ? JSON.parse(origin_data) : eval('(' + origin_data + ')');    };    _JSONFormat.prototype = {        constructor : JSONFormat,        toString : function(){            return format(this.data, 1);        }    }    return _JSONFormat;})();function create_result_contatiner(){    var $result = $('
')    var $result_container = $('
'); $result_container.append($result); $result_container.hover(function(){ $(this).stop(true).animate({width:'50%'}, 'slow'); }, function(){ $(this).stop(true).animate({width:'5%'}, 'slow'); }); $('body').append($result_container); return [$result_container, $result];}(function request_intercept(args){ var $result_container = args[0], $result = args[1]; $('form *[type="submit"]').bind('click', function(){ var _form = $(this).parents('form'), _action = (_form.attr('action') || './'), _method = (_form.attr('method') || 'get').toLowerCase(), _params = {}; _form.find('input[type="text"]').each(function(){ var item = $(this); _params[item.attr('name')] = item.val(); }); $['get' == _method ? 'get' : 'post'](_action, _params, function(response){ try{ var j = new JSONFormat(JSON && JSON.parse ? JSON.parse(response) : eval('(' + response + ')')); $result.html(j.toString()); }catch (e){ $result.html($result.text(response).html()); } $result_container.stop(true).animate({width:'50%'}, 'slow'); }); return false; });})(create_result_contatiner());

转载请注明来自:xesam

转载于:https://my.oschina.net/xesam/blog/117527

你可能感兴趣的文章
实验二
查看>>
独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
查看>>
MyBatis使用DEMO及cache的使用心得
查看>>
网站文章如何能自动判定是抄袭?一种算法和实践架构剖析
查看>>
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
jsp改造之sitemesh注意事项
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
CRM Transaction处理中的权限控制
查看>>
[转]linux创建链接文件的两种方法
查看>>
python ipaddress模块使用
查看>>
文件权限
查看>>
busybox里的僵尸进程为何那么多
查看>>