成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java如何將json數(shù)據(jù)格式化輸出到控制臺

MasonEast / 3264人閱讀

摘要:在做接口測試的過程中,大多數(shù)數(shù)據(jù)交互都使用格式,但是在控制臺輸出的效果遠(yuǎn)不如瀏覽器插件實(shí)現(xiàn)的漂亮。在找了一些資料后,決定自己寫一個格式化輸出信息到控制臺的方法,經(jīng)過一些嘗試已經(jīng)完成。

在做接口測試的過程中,大多數(shù)數(shù)據(jù)交互都使用json格式,但是在控制臺輸出json的效果遠(yuǎn)不如瀏覽器插件實(shí)現(xiàn)的漂亮。在找了一些資料后,決定自己寫一個格式化輸出json信息到控制臺的方法,經(jīng)過一些嘗試已經(jīng)完成。分享如下:

    /**
     * 輸出json
     *
     * @param jsonObject json格式響應(yīng)實(shí)體
     */
    public static JSONObject output(JSONObject jsonObject) {
        if (MapUtils.isEmpty(jsonObject)) {
            output("json 對象是空的!");
            return jsonObject;
        }
        String start = SourceCode.getManyString(SPACE_1, 4);
        String jsonStr = jsonObject.toString();// 先將json對象轉(zhuǎn)化為string對象
        jsonStr = jsonStr.replaceAll("/", OR);
        int level = 0;// 用戶標(biāo)記層級
        StringBuffer jsonResultStr = new StringBuffer(">  ");// 新建stringbuffer對象,用戶接收轉(zhuǎn)化好的string字符串
        for (int i = 0; i < jsonStr.length(); i++) {// 循環(huán)遍歷每一個字符
            char piece = jsonStr.charAt(i);// 獲取當(dāng)前字符
            // 如果上一個字符是斷行,則在本行開始按照level數(shù)值添加標(biāo)記符,排除第一行
            if (i != 0 && "
" == jsonResultStr.charAt(jsonResultStr.length() - 1)) {
                for (int k = 0; k < level; k++) {
                    jsonResultStr.append(start);
                }
            }
            switch (piece) {
                case ",":
                    // 如果是“,”,則斷行
                    char last = jsonStr.charAt(i - 1);
                    if (""0123456789le]}".contains(last + EMPTY)) {
                        jsonResultStr.append(piece + LINE);
                    } else {
                        jsonResultStr.append(piece);
                    }
                    break;
                case "{":
                case "[":
                    // 如果字符是{或者[,則斷行,level加1
                    jsonResultStr.append(piece + LINE);
                    level++;
                    break;
                case "}":
                case "]":
                    // 如果是}或者],則斷行,level減1
                    jsonResultStr.append(LINE);
                    level--;
                    for (int k = 0; k < level; k++) {
                        jsonResultStr.append(start);
                    }
                    jsonResultStr.append(piece);
                    break;
                default:
                    jsonResultStr.append(piece);
                    break;
            }
        }
        output(LINE + "↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ json ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙" + LINE + jsonResultStr.toString().replaceAll(LINE, LINE + ">  ") + LINE + "↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ json ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙ ↙");
        return jsonObject;
    }
    

更新了輸出顯示效果:

備注:在json數(shù)據(jù)中存在“,”這種情況以及value非string(數(shù)字和null或者科學(xué)技術(shù)法時)可能會存在一些顯示異常,以及value值本身是一個json數(shù)據(jù)的字符串時候也會把value當(dāng)做json來處理??傮w來說夠用,效果比較滿意。

一起來~FunTester

往期文章精選

java一行代碼打印心形

Linux性能監(jiān)控軟件netdata中文漢化版

接口測試代碼覆蓋率(jacoco)方案分享

性能測試框架

如何在Linux命令行界面愉快進(jìn)行性能測試

圖解HTTP腦圖

寫給所有人的編程思維

測試之JVM命令腦圖

公眾號地圖

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75960.html

相關(guān)文章

  • 如何寫一個無配置格式統(tǒng)一的日志

    摘要:背景大量項(xiàng)目在使用記日志,有部分項(xiàng)目使用日志混亂,格式不統(tǒng)一,多數(shù)人搞不懂配置文件,導(dǎo)致配置錯誤,現(xiàn)在需要開發(fā)一套統(tǒng)一的少配置的日志組件,使用方便。 背景 大量項(xiàng)目在使用logback記日志,有部分項(xiàng)目使用日志混亂,格式不統(tǒng)一,多數(shù)人搞不懂配置文件,導(dǎo)致配置錯誤,現(xiàn)在需要開發(fā)一套統(tǒng)一的、少配置的日志組件,使用方便。 設(shè)計思路 盡量采用0配置,無logback.xml 日志格式統(tǒng)一,方便...

    tulayang 評論0 收藏0
  • js溫故而知新6(JSON)——學(xué)習(xí)廖雪峰的js教程

    JSON JSON是JavaScript Object Notation的縮寫,它是一種數(shù)據(jù)交換格式。 道格拉斯·克羅克福特(Douglas Crockford)--雅虎的高級架構(gòu)師--發(fā)明了JSON這種超輕量級的數(shù)據(jù)交換格式. 序列化 讓我們先把小明這個對象序列化成JSON格式的字符串: var xiaoming = { name: 小明, age: 14, gender...

    20171112 評論0 收藏0
  • Spring Boot簡略入門手冊

    摘要:事實(shí)上,的依賴包已經(jīng)包含了,因此準(zhǔn)確地說,只用即可。這個文件的內(nèi)容初始是空的,表示全部使用的默認(rèn)值。的自動刷新很久之前提到的依賴包終于派上用場了。修改任意文件后,按執(zhí)行,瀏覽器就會在編譯完成后自動刷新。 引言 說起用Java語言來搭建Web項(xiàng)目,那么最令人熟知,也應(yīng)用最廣的框架就是Spring MVC了。不過,Spring MVC的Web項(xiàng)目搭建起來并不是一件簡單的事,而如果你也像我這...

    MobService 評論0 收藏0
  • Spring 指南(構(gòu)建RESTful Web服務(wù))

    摘要:構(gòu)建服務(wù)本指南將引導(dǎo)你完成使用創(chuàng)建服務(wù)的過程。接下來,你將創(chuàng)建將為這些問候語提供服務(wù)的資源控制器。告訴在包中查找其他組件配置和服務(wù),允許它找到控制器。顯示日志輸出,該服務(wù)應(yīng)在幾秒內(nèi)啟動并運(yùn)行。 構(gòu)建RESTful Web服務(wù) 本指南將引導(dǎo)你完成使用Spring創(chuàng)建hello world RESTful Web服務(wù)的過程。 將要構(gòu)建什么 你將構(gòu)建一個接受HTTP GET請求的服務(wù): ht...

    yzzz 評論0 收藏0
  • GitChat · 人工智能 | 用語音和自然語言控制智能家居——實(shí)例分享

    摘要:代碼下載語音和自然語言控制智能家居輸出協(xié)議實(shí)例源碼注下載代碼后請仔細(xì)閱讀說明文檔。表示處理來自接口的語義結(jié)果錄音處理為文字處理為是和的數(shù)據(jù)傳遞媒介,中會將需要的控件傳過去用來處理智能家居的語法解析和命令輸出。 GitChat 作者:晶晶郭原文:用語音和自然語言控制智能家居——實(shí)例分享關(guān)注公眾號:GitChat 技術(shù)雜談,一本正經(jīng)的講技術(shù) 前言 ZigBee作為一種短距離、低功耗的無線通...

    妤鋒シ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<