资讯专栏INFORMATION COLUMN

java如何将json数据格式化输出到控制台

MasonEast / 3190人阅读

摘要:在做接口测试的过程中,大多数数据交互都使用格式,但是在控制台输出的效果远不如浏览器插件实现的漂亮。在找了一些资料后,决定自己写一个格式化输出信息到控制台的方法,经过一些尝试已经完成。

在做接口测试的过程中,大多数数据交互都使用json格式,但是在控制台输出json的效果远不如浏览器插件实现的漂亮。在找了一些资料后,决定自己写一个格式化输出json信息到控制台的方法,经过一些尝试已经完成。分享如下:

    /**
     * 输出json
     *
     * @param jsonObject json格式响应实体
     */
    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对象转化为string对象
        jsonStr = jsonStr.replaceAll("/", OR);
        int level = 0;// 用户标记层级
        StringBuffer jsonResultStr = new StringBuffer(">  ");// 新建stringbuffer对象,用户接收转化好的string字符串
        for (int i = 0; i < jsonStr.length(); i++) {// 循环遍历每一个字符
            char piece = jsonStr.charAt(i);// 获取当前字符
            // 如果上一个字符是断行,则在本行开始按照level数值添加标记符,排除第一行
            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数据中存在“,”这种情况以及value非string(数字和null或者科学技术法时)可能会存在一些显示异常,以及value值本身是一个json数据的字符串时候也会把value当做json来处理。总体来说够用,效果比较满意。

一起来~FunTester

往期文章精选

java一行代码打印心形

Linux性能监控软件netdata中文汉化版

接口测试代码覆盖率(jacoco)方案分享

性能测试框架

如何在Linux命令行界面愉快进行性能测试

图解HTTP脑图

写给所有人的编程思维

测试之JVM命令脑图

公众号地图

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75960.html

相关文章

  • 如何写一个无配置格式统一的日志

    摘要:背景大量项目在使用记日志,有部分项目使用日志混乱,格式不统一,多数人搞不懂配置文件,导致配置错误,现在需要开发一套统一的少配置的日志组件,使用方便。 背景 大量项目在使用logback记日志,有部分项目使用日志混乱,格式不统一,多数人搞不懂配置文件,导致配置错误,现在需要开发一套统一的、少配置的日志组件,使用方便。 设计思路 尽量采用0配置,无logback.xml 日志格式统一,方便...

    tulayang 评论0 收藏0
  • js温故而知新6(JSON)——学习廖雪峰的js教程

    JSON JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。 道格拉斯·克罗克福特(Douglas Crockford)--雅虎的高级架构师--发明了JSON这种超轻量级的数据交换格式. 序列化 让我们先把小明这个对象序列化成JSON格式的字符串: var xiaoming = { name: 小明, age: 14, gender...

    20171112 评论0 收藏0
  • Spring Boot简略入门手册

    摘要:事实上,的依赖包已经包含了,因此准确地说,只用即可。这个文件的内容初始是空的,表示全部使用的默认值。的自动刷新很久之前提到的依赖包终于派上用场了。修改任意文件后,按执行,浏览器就会在编译完成后自动刷新。 引言 说起用Java语言来搭建Web项目,那么最令人熟知,也应用最广的框架就是Spring MVC了。不过,Spring MVC的Web项目搭建起来并不是一件简单的事,而如果你也像我这...

    MobService 评论0 收藏0
  • Spring 指南(构建RESTful Web服务)

    摘要:构建服务本指南将引导你完成使用创建服务的过程。接下来,你将创建将为这些问候语提供服务的资源控制器。告诉在包中查找其他组件配置和服务,允许它找到控制器。显示日志输出,该服务应在几秒内启动并运行。 构建RESTful Web服务 本指南将引导你完成使用Spring创建hello world RESTful Web服务的过程。 将要构建什么 你将构建一个接受HTTP GET请求的服务: ht...

    yzzz 评论0 收藏0
  • GitChat · 人工智能 | 用语音和自然语言控制智能家居——实例分享

    摘要:代码下载语音和自然语言控制智能家居输出协议实例源码注下载代码后请仔细阅读说明文档。表示处理来自接口的语义结果录音处理为文字处理为是和的数据传递媒介,中会将需要的控件传过去用来处理智能家居的语法解析和命令输出。 GitChat 作者:晶晶郭原文:用语音和自然语言控制智能家居——实例分享关注公众号:GitChat 技术杂谈,一本正经的讲技术 前言 ZigBee作为一种短距离、低功耗的无线通...

    妤锋シ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<