将Java对象序列化为CSV

时间:2016-03-04 22:59:46

标签: java csv

我有List<Cat>(根据以下类别):

public class Cat {
  public LocalDateTime dob;
  public String name;
  public boolean isHappy;
}

我希望将其转换为多行CSV文件(即每个Cat对象一行),然后我将其用于加载到DB中。 CSV可能如下所示:

"jack",true,"04-20-2000"
"fred",false,"01-01-1997"

对我来说,转换List< Cat&gt; objects to CSV format? Should I just write my own CatSerializer`课程的最佳方式是什么?或者我最好使用某种类型的库(我不知道任何库)。

我想知道这里的最佳做法是什么。

2 个答案:

答案 0 :(得分:0)

我不会使用单词序列化 使用java8只需循环遍历Cats的项目流列表,然后将它们转换为字符串列表 让字符串将它们转储到文件

答案 1 :(得分:0)

1.您可以编写CSV Utils来执行此操作。 2.使用图书馆CSV Library这样

  public void readeCsv(){   //read CSV
     try { 

     ArrayList<String[]> csvList = new ArrayList<String[]>(); //sava data
     String csvFilePath ="c:/test.csv";
     CsvReader reader = new CsvReader(csvFilePath,',',Charset.forName("SJIS")); 

     reader.readHeaders(); 

     while(reader.readRecord()){ //read by line
    csvList.add(reader.getValues());
    }
    reader.close();

     for(int row=0;row<csvList.size();row++){

     String cell = csvList.get(row)[0]; 
    System.out.println(cell);

    }


     }catch(Exception ex){
    System.out.println(ex);
    }
    }

    /**
     * write CSV
    */
     public void writeCsv(){
     try {

     String csvFilePath ="c:/test.csv";
     CsvWriter wr =new CsvWriter(csvFilePath,',',Charset.forName("SJIS"));
     String[] contents = {"aaaaa","bbbbb","cccccc","ddddddddd"}; 
    wr.writeRecord(contents);
    wr.close();
     } catch (IOException e) {
    e.printStackTrace();
    }
    }