在開發中我們經常要在控制檯中打印日誌,來實時定位追蹤問題,但是一般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();
}
}
通過處理,控制檯打印的日誌:
這樣處理之後,我們一眼就能找到我們所需要的數據了。