logcat 格式化输出json

在我们的开发中一定会使用logcat这个工具,每当我们请求一个数据的时候,我们服务器都会返回给我们一个结果,现在居多的是json (至少我的项目)。我们看这些数据很是费劲,之前都是把数据拷贝出来放到格式化工具中格式化一下。现在有了这个方便了很多,直接在logcat里面直接看省事很多。

/**

* json格式化工具

*

* @author fenglikun

*/

public class SanaJsonFormat {

/**

* 默认每次缩进两个空格

*/

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

}

使用:

logcat 格式化输出json_第1张图片

效果如下:

logcat 格式化输出json_第2张图片

你可能感兴趣的:(logcat 格式化输出json)