在开发中我们经常要在控制台中打印日志,来实时定位追踪问题,但是一般json数据不进行处理的话,都是扎堆在一起,很难一眼找到想要的数据,例如:
当数据量一多的时候,简直是灾难,只能把数据copy出来,用解析工具来查看,那有没有什么方法能直接在控制台看到解析好的数据,增加开发效率,那么就需要我们最原始数据进行处理了。
/**
* json数据处理解析
* Created by Veer
* date 18/1/11.
*/
public class JsonHandleUtils {
private static String getLevelStr(int level) {
StringBuffer levelStr = new StringBuffer();
for (int levelI = 0; levelI < level; levelI++) {
levelStr.append("\t");
}
return levelStr.toString();
}
public static String jsonHandle(String s) {
//json 字符串
int level = 0;
//存放格式化的json字符串
StringBuffer jsonForMatStr = new StringBuffer();
for(int index=0;index<s.length();index++)//将字符串中的字符逐个按行输出
{
//获取s中的每个字符
char c = s.charAt(index);
//level大于0并且jsonForMatStr中的最后一个字符为\n,jsonForMatStr加入\t
if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) {
jsonForMatStr.append(getLevelStr(level));
}
//遇到"{"和"["要增加空格和换行,遇到"}"和"]"要减少空格,以对应,遇到","要换行
switch (c) {
case '{':
case '[':
jsonForMatStr.append(c + "\n");
level++;
break;
case ',':
jsonForMatStr.append(c + "\n");
break;
case '}':
case ']':
jsonForMatStr.append("\n");
level--;
jsonForMatStr.append(getLevelStr(level));
jsonForMatStr.append(c);
break;
default:
jsonForMatStr.append(c);
break;
}
}
return jsonForMatStr.toString();
}
}
通过处理,控制台打印的日志:
这样处理之后,我们一眼就能找到我们所需要的数据了。