zoukankan      html  css  js  c++  java
  • 如何把csv文件转换为json格式

    public class CSVToJSon {
     
        private List<String> stringToList(String s, String sep) {
            if (s == null) {
                return null;
            }
     
            String[] parts = s.split(sep);
            return Arrays.asList(parts);
        }
     
        private String stringToJson(List<String> header, List<String> lineData) throws Exception {
     
            if (header == null || lineData == null) {
                throw new Exception("输入不能为null。");
            } else if (header.size() != lineData.size()) {
                throw new Exception("表头个数和数据列个数不等。");
            }
     
            StringBuilder sBuilder = new StringBuilder();
            sBuilder.append("{ ");
            for (int i = 0; i < header.size(); i++) {
                String mString = String.format(""%s":"%s"", header.get(i), lineData.get(i));
                sBuilder.append(mString);
     
                if (i != header.size() - 1) {
                    sBuilder.append(", ");
                }
            }
            sBuilder.append(" }");
     
            return sBuilder.toString();
        }
     
        public void ConvertToJson(InputStream filePath, OutputStream outPutPath) throws Exception {
           InputStreamReader isr=new InputStreamReader(filePath,"utf-8");

      BufferedReader reader=new BufferedReader(isr);

      OutputStreamWriter osw=new OutputStreamWriter(outPutPath,"utf-8");

      BufferedWriter reader=new BufferedWriter(osw);


            try {
                String sep = ",";
                String headerStr = reader.readLine();
     
                if (headerStr.trim().isEmpty()) {
                    System.out.println("表格头不能为空");
                    return;
                }
                
                List<String> header = stringToList(headerStr, sep);
                String line;
                int lineCnt = 1;
                while ((line = reader.readLine()) != null) {
     
                    if (line.trim().isEmpty()) {
                        System.out.println("第" + lineCnt + "行为空,已跳过");
                        continue;
                    }
                    
                    List<String> lineData = stringToList(line, sep);
     
                    if (lineData.size() != header.size()) {
                        String mString = String.format("第%d行数据列和表头列个数不一致 %s", lineCnt, line);
                        System.err.println(mString);
                        break;
                    }
     
                    String jsonStr = stringToJson(header, lineData);
                    writer.write(jsonStr);
                    writer.write(" ");
     
                    lineCnt++;
                }
            } finally {
                if (reader != null) {
                    reader.close();
                }
                if (writer != null) {
                    writer.close();
                }
            }
        }
     
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
            InputStream filePath=new FileInputStream("路径");
       OutputStream outPutPath=new OutputStream("路径");
            CSVToJSon csvToJSon = new CSVToJSon();
            csvToJSon.ConvertToJson(filePath, outPutPath);
            System.out.println("处理完成。");
        }
     
    }

  • 相关阅读:
    Java 泛型
    Github
    软件工程----前端
    前端全局缓存的三种方式
    关于IDE的选择
    模拟placeholder
    小程序request封装
    小程序实现大转盘抽奖----踩坑之路
    关于this的理解
    小程序背景图片bug
  • 原文地址:https://www.cnblogs.com/hhthtt/p/10931340.html
Copyright © 2011-2022 走看看