对Json字符串进行格式化显示
很多时候,我们拿Json字符串作为返回结果,但是当数据量多的时候,一堆的Json字符串看起来很不直观,这时候我们可以使用以下办法将Json字符串格式化一下再输出
var JsonUti = {
//定义换行符
n: "\n",
//定义制表符
t: "\t",
//转换String
convertToString: function (obj) {
return JsonUti.__writeObj(obj, );
},
//写对象
__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 - ) : "";
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
var tempArrValue = []; //集合元素相关字符串缓存片段
for (var i = ; 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 + ));
}
}
//加入当前对象“属性”字符串
currentObjStrings.push(temp.join(""));
}
return (level > && !isInArray ? JsonUti.n : "") //如果Json对象是内部,就要换行格式化
+ JsonUti.__repeatStr(JsonUti.t, level - ) + "{" + JsonUti.n //加层次Tab格式化
+ currentObjStrings.join("," + JsonUti.n) //串联所有属性值
+ JsonUti.n + JsonUti.__repeatStr(JsonUti.t, level - ) + "}"; //封闭对象
},
__isArray: function (obj) {
if (obj) {
return obj.constructor == Array;
}
return false;
},
__repeatStr: function (str, times) {
var newStr = [];
if (times > ) {
for (var i = ; i < times; i++) {
newStr.push(str);
}
}
return newStr.join("");
}
};
使用:alert(JsonUti.convertToString(data)); 其中data为json对象。
格式化之前:
{"Data":"","Code":403,"Message":"无权访问"}
格式化之后效果:
{
Data : "",
Code : 403,
Message : "无权访问"
}
对Json字符串进行格式化显示的更多相关文章
- PHP json字符串,格式化缩进显示
PHP json字符串,格式化显示 /** * 格式化 */ class JsonFormatHelper { /** * json字符串缩进显示 * @param unknown $json * @ ...
- JSON字符串控制台格式化输出 java
1.正常情况下返回的json数据格式如下: {"header":{"transSn":"e33128bb7622462ebfb2cbfcc46baa1 ...
- PHP中json_encode后,在json字符串中依然显示中文的解决方案
<?php header("Content-Type:text/html;charset=utf-8;"); $arr = array ('Version_code'=> ...
- json字符串CSS格式化
其实JSON.stringify本身就可以将JSON格式化,具体的用法是: JSON.stringify(res, null, 2); //res是要JSON化的对象,2是spacing 如果想要效果 ...
- 推荐一款JSON字符串查看器
JSON Viewer是一款方便易用的Json格式查看器.Json格式的数据阅读性很差,如果数据量大的话再阅读方面会十分困难,有了这软件,问题就解决了,能够快速把Json字符串排列规则的树结构,支持对 ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- Java - 格式化输出JSON字符串的两种方式
目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...
- 看看你的正则行不行——正则优化一般的json字符串
json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显 ...
- C#后台格式化JSON字符串显示
很多时候我们从服务器上获取的JSON字符串是没有格式化的,如下: {"BusinessId":null,"Code":200,"Data": ...
随机推荐
- CodeForces 176A Trading Business 贪心
Trading Business 题目连接: http://codeforces.com/problemset/problem/176/A Description To get money for a ...
- linux C(hello world)最大公约数和最小公倍数
# include <stdio.h> int main(void) { int x, y,temp; int r; printf("请输入两个正整数:\n"); sc ...
- Nginx_handler模块发开(hello模块结构解析)
声明:请在文章页面明显位置给出原文连接 http://www.cnblogs.com/paulweihan/p/4654173.html,否则保留追究法律责任的权利. 近期查了非常多资料.入门的样例都 ...
- 提供一个免费的CSDN下载账号
账号:windforce05password:w12345678请下载了资源后评价一下资源,以便赚回分数.
- iOS开发——UI篇Swift篇&UIImageView
UIImageView override func viewDidLoad() { super.viewDidLoad() titleLabel.text = titleString //通过坐标和大 ...
- cocos2d-html5 笔记3: Node
Cocos2d采用类似于Dom tree的那种形式来各个部分组织起来.最基本的基类是Node吧, Node Node 作为基类,函数很多,我觉得可以分为如下几类,树相关的函数, 一些公共的比较实用的函 ...
- Linux Shell之top命令
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
- Border绘制虚线框(转)
<Grid> <Border HorizontalAlignment="Center" VerticalAlignment="Center" ...
- Solr特殊字符转义处理
做站内搜索时,如果输入的参数中包含英文冒号.双引号或其他具有特殊含义的字符时,可能需要做转义来避免查不到数据的问题. 测试于:Solr 4.5.1, Jdk 1.6.0_45, Tomcat 6.0. ...
- uiview 的transitionWithView 方法使用
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [UIView transitionWithView:_imageV ...