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("");
}
};

最新文章

  1. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
  2. C语言函数的读写
  3. Asp.Net中文本换行
  4. 使用Xcode查找项目中的中文字符串
  5. Stanford CoreNLP--Part of Speech
  6. centos5.5用phpstudy一键安装配置虚拟主机后,yum配置代理服务器squid
  7. python 在 eclipse 上的编码配置问题
  8. Ubuntu16 远程连接MySQL
  9. SpringCloud四:hystrix-propagation
  10. JAVA_SE基础——3.Java程序的开发流程
  11. [Swift]LeetCode247.对称数 II $ Strobogrammatic Number II
  12. vue 组件发布记录
  13. Linux内存管理6---伙伴算法与slab
  14. 推荐算法 pd
  15. BQMeetup
  16. PHP与MYSQL中UTF8 中文排序例子
  17. 苏州Uber优步司机奖励政策(4月22日)
  18. 将input type=&quot;file&quot; 类型的图片文件转成base64
  19. JAVA编程思想读书笔记(三)--RTTI
  20. Android Studio 无法预览布局问题:com/android/util/PropertiesMap

热门文章

  1. CentOS 7的安装
  2. Linux命令——压缩和解压缩
  3. leetcode338&mdash;Counting Bits
  4. jqgrid editrules参数说明
  5. 关于mydumper的.metadata文件丢失
  6. 虚拟机上不能使用CUDA
  7. java 锁白话
  8. SQLAlchemy 关联表删除实验
  9. 【HNOI2016】矿区
  10. CDH上Cloudera Management Service 各个角色迁移至其他节点