天天看點

以json格式将json資料列印在控制台,以json格式将json資料寫入檔案

package com.sensor.sellCabinet.util;

import java.io.File;
import java.io.FileOutputStream;

public class JsonPrint {

    private static String getLevelStr(int level) {
        StringBuffer levelStr = new StringBuffer();
        for (int levelI = 0; levelI < level; levelI++) {
            levelStr.append("\t");
        }
        return levelStr.toString();
    }
    public static void print(String filePath,String s){
        int level = 0;
        //存放格式化的json字元串
        StringBuffer jsonForMatStr = new StringBuffer();
        for(int index=0;index<s.length();index++)//将字元串中的字元逐個按行輸出
        {
            //擷取s中的每個字元
            char c = s.charAt(index);
//          System.out.println(s.charAt(index));

            //level大于0并且jsonForMatStr中的最後一個字元為\n,jsonForMatStr加入\t
            if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) {
                jsonForMatStr.append(getLevelStr(level));
//                System.out.println("123"+jsonForMatStr);
            }
            //遇到"{"和"["要增加空格和換行,遇到"}"和"]"要減少空格,以對應,遇到","要換行
            switch (c) {
                case '{':
                case '[':
                    jsonForMatStr.append(c + "\n");
                    level++;
                    break;
                case ',':
                    jsonForMatStr.append(c + "\n");
                    break;
                case '}':
                case ']':
                    jsonForMatStr.append("\n");
                    level--;
                    jsonForMatStr.append(getLevelStr(level));
                    jsonForMatStr.append(c);
                    break;
                default:
                    jsonForMatStr.append(c);
                    break;
            }
        }
        write(filePath,jsonForMatStr);
    }

    /**
     * 寫入檔案
     */
    private static void write(String filePath,StringBuffer val) {
        try {

            File file = new File(filePath);
            if(!file.exists()){
                file.createNewFile();
            }
            FileOutputStream stream = new FileOutputStream(file, true);
            stream.write((val+(System.getProperty("line.separator"))).getBytes());
            stream.flush();
            stream.close();
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}      
以json格式将json資料列印在控制台,以json格式将json資料寫入檔案