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