您的位置:首页 > Web前端 > JavaScript

对Json字符串进行格式化显示

2015-04-21 16:39 495 查看
很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出

var JsonUti = {
//定义换行符
n: "\n",
//定义制表符
t: "\t",
//转换String
convertToString: function (obj) {
return JsonUti.__writeObj(obj, 1);
},
//写对象
__writeObj: function (obj    //对象
, level             //层次(基数为1)
, isInArray) {       //此对象是否在一个集合内
//如果为空,直接输出null
if (obj == null) {
return "null";
}
//为普通类型,直接输出值
if (obj.constructor == Number || obj.constructor == Date || obj.constructor == String || obj.constructor == Boolean) {
var v = obj.toString();
var tab = isInArray ? JsonUti.__repeatStr(JsonUti.t, level - 1) : "";
if (obj.constructor == String || obj.constructor == Date) {
//时间格式化只是单纯输出字符串,而不是Date对象
return tab + ("\"" + v + "\"");
}
else if (obj.constructor == Boolean) {
return tab + v.toLowerCase();
}
else {
return tab + (v);
}
}

//写Json对象,缓存字符串
var currentObjStrings = [];
//遍历属性
for (var name in obj) {
var temp = [];
//格式化Tab
var paddingTab = JsonUti.__repeatStr(JsonUti.t, level);
temp.push(paddingTab);
//写出属性名
temp.push(name + " : ");

var val = obj[name];
if (val == null) {
temp.push("null");
}
else {
var c = val.constructor;

if (c == Array) { //如果为集合,循环内部对象
temp.push(JsonUti.n + paddingTab + "[" + JsonUti.n);
var levelUp = level + 2;    //层级+2

var tempArrValue = [];      //集合元素相关字符串缓存片段
for (var i = 0; i < val.length; i++) {
//递归写对象
tempArrValue.push(JsonUti.__writeObj(val[i], levelUp, true));
}

temp.push(tempArrValue.join("," + JsonUti.n));
temp.push(JsonUti.n + paddingTab + "]");
}
else if (c == Function) {
temp.push("[Function]");
}
else {
//递归写对象
temp.push(JsonUti.__writeObj(val, level + 1));
}
}
//加入当前对象“属性”字符串
currentObjStrings.push(temp.join(""));
}
return (level > 1 && !isInArray ? JsonUti.n : "")                       //如果Json对象是内部,就要换行格式化
+ JsonUti.__repeatStr(JsonUti.t, level - 1) + "{" + JsonUti.n     //加层次Tab格式化
+ currentObjStrings.join("," + JsonUti.n)                       //串联所有属性值
+ JsonUti.n + JsonUti.__repeatStr(JsonUti.t, level - 1) + "}";   //封闭对象
},
__isArray: function (obj) {
if (obj) {
return obj.constructor == Array;
}
return false;
},
__repeatStr: function (str, times) {
var newStr = [];
if (times > 0) {
for (var i = 0; i < times; i++) {
newStr.push(str);
}
}
return newStr.join("");
}
};


使用:alert(JsonUti.convertToString(data)); 其中data为json对象。

格式化之前:

{"Data":"","Code":403,"Message":"无权访问"}

格式化之后效果:

{
Data : "",
Code : 403,
Message : "无权访问"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: