亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

MasonEast / 3302人閱讀

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

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

    /**
     * 輸出json
     *
     * @param jsonObject json格式響應(yīng)實(shí)體
     */
    public static JSONObject output(JSONObject jsonObject) {
        if (MapUtils.isEmpty(jsonObject)) {
            output("json 對(duì)象是空的!");
            return jsonObject;
        }
        String start = SourceCode.getManyString(SPACE_1, 4);
        String jsonStr = jsonObject.toString();// 先將json對(duì)象轉(zhuǎn)化為string對(duì)象
        jsonStr = jsonStr.replaceAll("/", OR);
        int level = 0;// 用戶標(biāo)記層級(jí)
        StringBuffer jsonResultStr = new StringBuffer(">  ");// 新建stringbuffer對(duì)象,用戶接收轉(zhuǎn)化好的string字符串
        for (int i = 0; i < jsonStr.length(); i++) {// 循環(huán)遍歷每一個(gè)字符
            char piece = jsonStr.charAt(i);// 獲取當(dāng)前字符
            // 如果上一個(gè)字符是斷行,則在本行開始按照l(shuí)evel數(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ù)法時(shí))可能會(huì)存在一些顯示異常,以及value值本身是一個(gè)json數(shù)據(jù)的字符串時(shí)候也會(huì)把value當(dāng)做json來處理。總體來說夠用,效果比較滿意。

一起來~FunTester

往期文章精選

java一行代碼打印心形

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

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

性能測(cè)試框架

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

圖解HTTP腦圖

寫給所有人的編程思維

測(cè)試之JVM命令腦圖

公眾號(hào)地圖

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75960.html

相關(guān)文章

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

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

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

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

    20171112 評(píng)論0 收藏0
  • Spring Boot簡(jiǎn)略入門手冊(cè)

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

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

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

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

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

    妤鋒シ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<