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

jackson格式化后的字符串没有规律,以下直接将jackson格式化后的字符串解析后存入文本

//格式化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();  
 	    }  
    }

 

效果如下:

格式化前

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

格式化后

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

转载于:https://my.oschina.net/u/3065626/blog/796865

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值