• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    3年前 (2015-08-25)  Android |   抢沙发  9 
    文章评分 0 次,平均分 0.0

    以前分享过一条对象Json化后格式化文本:点击这里

    但是对于一段已经是文本的Json字符串,可以使用如下的代码进行格式化

    package net.unix8;
    
    public class JsonFormatTool  
    {  
        /** 
         * 单位缩进字符串。 
         */  
        private static String SPACE = "   ";  
          
        /** 
         * 返回格式化JSON字符串。 
         *  
         * @param json 未格式化的JSON字符串。 
         * @return 格式化的JSON字符串。 
         */  
        public String formatJson(String json)  
        {  
            StringBuffer result = new StringBuffer();  
              
            int length = json.length();  
            int number = 0;  
            char key = 0;  
              
            //遍历输入字符串。  
            for (int i = 0; i < length; i++)  
            {  
                //1、获取当前字符。  
                key = json.charAt(i);  
                  
                //2、如果当前字符是前方括号、前花括号做如下处理:  
                if((key == '[') || (key == '{') )  
                {  
                    //(1)如果前面还有字符,并且字符为“:”,打印:换行和缩进字符字符串。  
                    if((i - 1 > 0) && (json.charAt(i - 1) == ':'))  
                    {  
                        result.append('\n');  
                        result.append(indent(number));  
                    }  
                      
                    //(2)打印:当前字符。  
                    result.append(key);  
                      
                    //(3)前方括号、前花括号,的后面必须换行。打印:换行。  
                    result.append('\n');  
                      
                    //(4)每出现一次前方括号、前花括号;缩进次数增加一次。打印:新行缩进。  
                    number++;  
                    result.append(indent(number));  
                      
                    //(5)进行下一次循环。  
                    continue;  
                }  
                  
                //3、如果当前字符是后方括号、后花括号做如下处理:  
                if((key == ']') || (key == '}') )  
                {  
                    //(1)后方括号、后花括号,的前面必须换行。打印:换行。  
                    result.append('\n');  
                      
                    //(2)每出现一次后方括号、后花括号;缩进次数减少一次。打印:缩进。  
                    number--;  
                    result.append(indent(number));  
                      
                    //(3)打印:当前字符。  
                    result.append(key);  
                      
                    //(4)如果当前字符后面还有字符,并且字符不为“,”,打印:换行。  
                    if(((i + 1) < length) && (json.charAt(i + 1) != ','))  
                    {  
                        result.append('\n');  
                    }  
                      
                    //(5)继续下一次循环。  
                    continue;  
                }  
                  
                //4、如果当前字符是逗号。逗号后面换行,并缩进,不改变缩进次数。  
                if((key == ','))  
                {  
                    result.append(key);  
                    result.append('\n');  
                    result.append(indent(number));  
                    continue;  
                }  
                  
                //5、打印:当前字符。  
                result.append(key);  
            }  
              
            return result.toString();  
        }  
          
        /** 
         * 返回指定次数的缩进字符串。每一次缩进三个空格,即SPACE。 
         *  
         * @param number 缩进次数。 
         * @return 指定缩进次数的字符串。 
         */  
        private String indent(int number)  
        {  
            StringBuffer result = new StringBuffer();  
            for(int i = 0; i < number; i++)  
            {  
                result.append(SPACE);  
            }  
            return result.toString();  
        }  
    }  
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/4254.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享