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

}

使用:

效果如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,347评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,906评论 18 399
  • 贪心算法 贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上...
    fredal阅读 13,039评论 3 52
  • China will hold Olympic Winter Games in 2022 Internationa...
    Theia阅读 3,294评论 0 1