美文网首页
Android JSON字符串格式化打印

Android JSON字符串格式化打印

作者: 修车司机 | 来源:发表于2019-07-15 18:37 被阅读0次

在我们请求网络接口时,一般服务器返回的都是json字符串。如果返回数据量太大的话,打印出来则很难看。所以写了个格式化json字符串的小工具,希望能帮助到大家。

package com.chenc.utils;

public class JSONFormat {
    private static boolean isDebug=true;

    public static void isDebug(boolean isDebug) {
        JSONFormat.isDebug = isDebug;
    }

    public static String format(String mJson){
        StringBuilder soruce=new StringBuilder(mJson);
        if(mJson==null||mJson.equals("")){
            return null;
        }
        int offset=0;//目标字符串插入空格偏移量
        int bOffset=0;//空格偏移量
        for(int i=0;i<mJson.length();i++){
            char charAt=mJson.charAt(i);
            if(charAt=='{'||charAt=='['){
                bOffset+=4;
                soruce.insert(i+offset+1,"\n"+generateBlank(bOffset));
                offset+=(bOffset+1);
            }else if(charAt==','){
                soruce.insert(i+offset+1,"\n"+generateBlank(bOffset));
                offset+=(bOffset+1);
            }else if(charAt=='}'||charAt==']'){
                bOffset-=4;
                soruce.insert(i+offset,"\n"+generateBlank(bOffset));
                offset+=(bOffset+1);
            }
        }
        return soruce.toString();
    }

    /**
     * 打印
     * @param shouldShowAll 是否将全部打印出来
     */
    public static void print(String mJson,boolean shouldShowAll){
        if(!isDebug) return;
        if(mJson==null) return;
        try {
            System.out.println("----------print begin-----------");
            String willPrintString = format(mJson);
            if (!shouldShowAll) {
                System.out.println(willPrintString);
            } else {
                int length = willPrintString.length();
                int index = 0;
                while (length > 2000) {
                    System.out.println(willPrintString.substring(index * 2000, (index + 1) * 2000));
                    length -= 2000;
                    index++;
                }
                System.out.println(willPrintString.substring(index * 2000));
            }
            System.out.println("----------print end-----------");
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    private static String generateBlank(int num){
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=0;i<num;i++){
            stringBuilder.append(" ");
        }
        return stringBuilder.toString();
    }

}

打印效果!


WeChat92a8b21c101c53a21ce6fc222712cd05.png

相关文章

网友评论

      本文标题:Android JSON字符串格式化打印

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