java格式化json字符串輸入到文本中

jackson格式化後的字符串沒有規律,如下直接將jackson格式化後的字符串解析後存入文本java

//格式化json字符串
public static String formatJson(String jsonStr) {
        if (null == jsonStr || "".equals(jsonStr)) return "";
        StringBuilder sb = new StringBuilder();
        char last = '\0';
        char current = '\0';
        int indent = 0;
        for (int i = 0; i < jsonStr.length(); i++) {
            last = current;
            current = jsonStr.charAt(i);
            switch (current) {
                case '{':
                case '[':
                    sb.append(current);
                    sb.append('\n');
                    indent++;
                    addIndentBlank(sb, indent);
                    break;
                case '}':
                case ']':
                    sb.append('\n');
                    indent--;
                    addIndentBlank(sb, indent);
                    sb.append(current);
                    break;
                case ',':
                    sb.append(current);
                    if (last != '\\') {
                        sb.append('\n');
                        addIndentBlank(sb, indent);
                    }
                    break;
                default:
                    sb.append(current);
            }
        }

        return sb.toString();
    }

    /**
     * 添加space
     * @param sb
     * @param indent
     * @author   xuhy
     * @Date   2015-10-14 上午10:38:04
     */
    public static void addIndentBlank(StringBuilder sb, int indent) {
        for (int i = 0; i < indent; i++) {
            sb.append('\t');
        }
    }
    //直接用字符流寫入文本了. str表示已經經過上面方法格式化後的字符串
    public static void writeFile(String str,File file){
    	 String b=formatJson(str);    	
 	    try  
 	    {      
 	      // 建立文件對象  
 	      //File fileText = new File("D:\\Users\\Administrator\\Desktop\\index\\tfjbp-features-sysEN.json");  
 	      // 向文件寫入對象寫入信息  
 	      FileWriter fw = new FileWriter(file);  
 	      BufferedWriter bw=new BufferedWriter(fw);
 	      // 寫文件        
 	      bw.write(b);  
 	      bw.flush();//強制輸出下省得 en寫入數據不完整
 	      // 關閉  
 	      bw.close(); 
 	      fw.close();
 	    }  
 	    catch (IOException e)  
 	    {  
 	      //  
 	      e.printStackTrace();  
 	    }  
    }

 

效果以下:json

格式化前app

{"userInfo.birthday":"Birthday","report.img":"","report.company":"","userInfo.address":"Address","newPassword":"","deptIsEnabled":"","updateUser.tel":""}ui

格式化後spa

{
    "userInfo.birthday":"Birthday",
    "report.img":"",
    "report.company":"",
    "userInfo.address":"Address",
    "newPassword":"",
    "deptIsEnabled":"",
    "updateUser.tel":""
}code

相關文章
相關標籤/搜索