格式化JSON 格式

作者: i小灰 | 来源:发表于2021-07-10 01:31 被阅读0次

    平常我们用OkHttp请求后响应的json数据杂乱不堪没有格式不容易看清晰 如下


    image.png

    我写了一个格式化校验的工具类在输出日志的时候调用 使用效果如下


    image.png
      /**
         * 将字符串格式化成 JSON 格式
         */
        static String formatJson(String json) {
            if (json == null) {
                return "";
            }
            // 计数tab的个数
            int tabNum = 0;
            StringBuilder builder = new StringBuilder();
            int length = json.length();
    
            char last = 0;
            for (int i = 0; i < length; i++) {
                char c = json.charAt(i);
                if (c == '{') {
                    tabNum++;
                    builder.append(c).append("\n")
                            .append(getSpaceOrTab(tabNum));
                } else if (c == '}') {
                    tabNum--;
                    builder.append("\n")
                            .append(getSpaceOrTab(tabNum))
                            .append(c);
                } else if (c == ',') {
                    builder.append(c).append("\n")
                            .append(getSpaceOrTab(tabNum));
                } else if (c == ':') {
                    if (i > 0 && json.charAt(i - 1) == '"') {
                        builder.append(c).append(" ");
                    } else {
                        builder.append(c);
                    }
                } else if (c == '[') {
                    tabNum++;
                    char next = json.charAt(i + 1);
                    if (next == ']') {
                        builder.append(c);
                    } else {
                        builder.append(c).append("\n")
                                .append(getSpaceOrTab(tabNum));
                    }
                } else if (c == ']') {
                    tabNum--;
                    if (last == '[') {
                        builder.append(c);
                    } else {
                        builder.append("\n").append(getSpaceOrTab(tabNum)).append(c);
                    }
                } else {
                    builder.append(c);
                }
                last = c;
            }
            return builder.toString();
        }
    
        /**
         * 创建对应数量的制表符
         */
        static String getSpaceOrTab(int tabNum) {
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < tabNum; i++) {
                sb.append('\t');
            }
            return sb.toString();
        }
    

    相关文章

      网友评论

        本文标题:格式化JSON 格式

        本文链接:https://www.haomeiwen.com/subject/bcwkyltx.html