格式化输出Json对象
2024-08-27 11:02:46
1.调用方式:
alert(JsonUti.convertToString(jsonObj)); //jsonObj为json对象。
2.格式化输出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("");
}
};
最新文章
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
- C语言函数的读写
- Asp.Net中文本换行
- 使用Xcode查找项目中的中文字符串
- Stanford CoreNLP--Part of Speech
- centos5.5用phpstudy一键安装配置虚拟主机后,yum配置代理服务器squid
- python 在 eclipse 上的编码配置问题
- Ubuntu16 远程连接MySQL
- SpringCloud四:hystrix-propagation
- JAVA_SE基础——3.Java程序的开发流程
- [Swift]LeetCode247.对称数 II $ Strobogrammatic Number II
- vue 组件发布记录
- Linux内存管理6---伙伴算法与slab
- 推荐算法 pd
- BQMeetup
- PHP与MYSQL中UTF8 中文排序例子
- 苏州Uber优步司机奖励政策(4月22日)
- 将input type=";file"; 类型的图片文件转成base64
- JAVA编程思想读书笔记(三)--RTTI
- Android Studio 无法预览布局问题:com/android/util/PropertiesMap