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

分享一个格式化json的工具类,在日志输入里直接可以很方便的看log了

2017-06-28 16:23 721 查看


用法:

@Override

public void onResponse(String response) {

if(AppConfig.DEBUG) {

Log.e(“json_http”, “http返回参数:” + JsonFormat.format((java.lang.String) response));

}

onSuccess(response);

}

下面贴代码,可以直接用。

package com.yilvs.utils;

/**
* json格式化工具
* Created by Sch on 2017/6/28.
*
*/
public class JsonFormat {

/**
* 默认每次缩进两个空格
*/
private static final String empty="  ";

public static String format(String json){
try {
int empty=0;
char[]chs=json.toCharArray();
StringBuilder stringBuilder=new StringBuilder();
for (int i = 0; i < chs.length;) {
//若是双引号,则为字符串,下面if语句会处理该字符串
if (chs[i]=='\"') {

stringBuilder.append(chs[i]);
i++;
//查找字符串结束位置
for ( ; i < chs.length;) {
//如果当前字符是双引号,且前面有连续的偶数个\,说明字符串结束
if ( chs[i]=='\"'&&isDoubleSerialBackslash(chs,i-1)) {
stringBuilder.append(chs[i]);
i++;
break;
} else{
stringBuilder.append(chs[i]);
i++;
}

}
}else if (chs[i]==',') {
stringBuilder.append(',').append('\n').append(getEmpty(empty));

i++;
}else if (chs[i]=='{'||chs[i]=='[') {
empty++;
stringBuilder.append(chs[i]).append('\n').append(getEmpty(empty));

i++;
}else if (chs[i]=='}'||chs[i]==']') {
empty--;
stringBuilder.append('\n').append(getEmpty(empty)).append(chs[i]);

i++;
}else {
stringBuilder.append(chs[i]);
i++;
}

}

return stringBuilder.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return json;
}

}
private static boolean isDoubleSerialBackslash(char[] chs, int i) {
int count=0;
for (int j = i; j >-1; j--) {
if (chs[j]=='\\') {
count++;
}else{
return count%2==0;
}
}

return count%2==0;
}
/**
* 缩进
* @param count
* @return
*/
private static String getEmpty(int count){
StringBuilder stringBuilder=new StringBuilder();
for (int i = 0; i < count; i++) {
stringBuilder.append(empty) ;
}

return stringBuilder.toString();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐