您的位置:首页 > 移动开发 > Android开发

Android学习之JSON字符串格式化,自动缩进

2017-05-04 10:52 381 查看
/**
* JSON字符串格式化成JSON结构
*
* @author lzy
*
*/
public class JSONTool {

public static String stringToJSON(String strJson) {
// 计数tab的个数
       int tabNum = 0;
       StringBuffer jsonFormat = new StringBuffer();
       int length = strJson.length();

       char last = 0;
       for (int i = 0; i < length; i++) {
char c = strJson.charAt(i);
           if (c == '{') {
tabNum++;
               jsonFormat.append(c + "\n");
               jsonFormat.append(getSpaceOrTab(tabNum));
           }
else if (c == '}') {
tabNum--;
               jsonFormat.append("\n");
               jsonFormat.append(getSpaceOrTab(tabNum));
               jsonFormat.append(c);
           }
else if (c == ',') {
jsonFormat.append(c + "\n");
               jsonFormat.append(getSpaceOrTab(tabNum));
           }
else if (c == ':') {
jsonFormat.append(c + " ");
           }
else if (c == '[') {
tabNum++;
               char next = strJson.charAt(i + 1);
               if (next == ']') {
jsonFormat.append(c);
               }
else {
jsonFormat.append(c + "\n");
                   jsonFormat.append(getSpaceOrTab(tabNum));
               }
}
else if (c == ']') {
tabNum--;
               if (last == '[') {
jsonFormat.append(c);
               }
else {
jsonFormat.append("\n" + getSpaceOrTab(tabNum) + c);
               }
}
else {
jsonFormat.append(c);
           }
last = c;
       }
return jsonFormat.toString();
   }

// 是空格还是tab
   private static String getSpaceOrTab(int tabNum) {
StringBuffer sbTab = new StringBuffer();
       for (int i = 0; i < tabNum; i++) {
sbTab.append('\t');
       }
return sbTab.toString();
   }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息