控制檯Json日誌解析處理


在開發中我們經常要在控制檯中打印日誌,來實時定位追蹤問題,但是一般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();
 
    }
 
}

通過處理,控制檯打印的日誌:


這樣處理之後,我們一眼就能找到我們所需要的數據了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章