博主首页

以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
        }
    }
}

 

 

 

posted @ 2021-09-17 15:21  笑~笑  阅读(503)  评论(0编辑  收藏  举报