首页 > 网站 > WEB开发 > 正文

使用Javascript打印JSON数据

2024-04-27 14:16:57
字体:
来源:转载
供稿:网友

使用javascript打印JSON数据

使用Javascript打印JSON数据

转发请标明原文链接:http://www.cnblogs.com/misuoka/p/4081750.html

废话不扯,直入主题。

一般来说,ChromeFirefox两款浏览器已提供我们强大的调试功能,可以在网络请求选项中查看Ajax请求页返回的JSON数据。但如果数据较为复杂,就不易于观看。

例如:

1.Chrome中的情况:

2.Firefox中的情况:

所以,我们可以编写一个函数来把JSON对象以友好的格式打印到HTML页面中,以便观看。

效果如下:

实现代码:

/** 输出空格函数 */function blank(num) {    var res = '';    for (var i = 0; i < num; i++) {        res += ' ';    }    return res;}   /** 计算JSON对象数据个数 */function jsonLen(jsonObj) {    var length = 0;    for (var item in jsonObj) {      length++;    }    return length;}/** 解析JSON对象函数 */function PRintObj(obj) {    // JSON对象层级深度    deep = (typeof(deep)=='undefined') ? 0: deep;    var html = "Array/n"; // 返回的HTML    html += kong(deep) + "(/n";    var i = 0;     // JSON对象,不能使用.length获取数据的个数,故需自定义一个计算函数    var len = typeof(obj) == 'array' ? obj.length : jsonLen(obj);    for(var key in obj){        // 判断数据类型,如果是数组或对象,则进行递归        // 判断object类型时,&&jsonLen(obj[key])是由于        // 1、值(类似:email:)为null的时候,typeof(obj[key])会把这个key当做object类型        // 2、值为null的来源是,数据库表中某些字段没有数据,查询之后直接转为JSON返回过来        if(typeof(obj[key])=='array'|| (typeof(obj[key])=='object' && jsonLen(obj[key]) > 0) ){            deep += 3;            html += kong(deep) + '[' + key + '] => ';            // 递归调用本函数            html += printObj(obj[key],deep);            deep -= 3;        }else{            html += kong(deep + 3) + '[' + key + '] => ' + obj[key] + '/n';        }        if (i == len -1) {            html += kong(deep) + ")/n";        };        i++;    }    return html;}/** 向HTML页面追加打印JSON数据 */function p_Obj(obj) {    var div = document.getElementById('print-json-html');    if (div != null) {        document.body.removeChild(div);    };    var node = document.createElement("div");//创建一个div标签     node.id = 'print-json-html';    node.innerHTML = '<pre>' + printObj(obj) + '</pre>';    document.body.appendChild(node);}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表