2016-02-25 51 views
2

我已經創建了一個將csv文件轉換爲dto然後ojson結構的類,但是當我轉換爲json時,我只能在csv中獲得最後一行。將DTO轉換爲JSON

這是我的代碼

public class TermParsing { 

    private static final Logger log = Logger.getLogger(TermParsing.class.getName()); 
    Properties prop = new Properties(); 
    String data; 
    //creating object for the dto class 
    TermParsingDTO term = new TermParsingDTO(); 
    CsvReader read; 
    JSONObject json = new JSONObject(); 
    HashMap hmap=new HashMap(); 

    //method to parse the csv file  
    void changeFileType() throws IOException { 
     try { 
      //to get the properties file from the source 
      FileReader file = new FileReader("./config.txt"); 
      //loading the properties file 
      prop.load(file); 
      data = prop.getProperty("File"); 
      String path = prop.getProperty("Path"); 
      //to export the log message to the target 
      FileHandler fh = new FileHandler(path); 
      log.addHandler(fh); 
      //to format the log messages 
      SimpleFormatter format = new SimpleFormatter(); 
      fh.setFormatter(format); 
      log.warning("FileNotFoundException may occur"); 
      //reading the input csv file 
      read = new CsvReader(data); 
      read.readHeaders(); 
      //to obtain the values from csv file 
      while (read.readRecord()) { 
       term.setTerm_Name(Arrays.asList(read.get("Term Name"))); 
       term.setParent_category(Arrays.asList(read.get("Parent Category"))); 
       term.setShort_description(Arrays.asList(read.get("Short Description"))); 
       term.setLong_description(Arrays.asList(read.get("Long Description"))); 
       term.setStatus(Arrays.asList(read.get("Status"))); 
      }     
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(TermParsing.class.getName()).log(Level.SEVERE, "FileNotFoundException", ex); 
     } 
    } 

在這裏這種方法單獨一個值

void convertToJson() throws IOException {    
    ObjectMapper map = null; 
    String jsonInString; 
    map = new ObjectMapper(); 
    jsonInString = map.writerWithDefaultPrettyPrinter().writeValueAsString(term); 
    System.out.println(jsonInString); 
} 

回答

0

你是不是應該獨立閱讀所有行創建的json結構?

TermParsingDTO term = new TermParsingDTO(); 

這應該是:

List<TermParsingDTO> terms = new ArrayList<>(); 

而在你的循環結束:

terms.add(term); 

然後所有的記錄將出現在列表中。

+0

完成後重複上一個值。 { 「Term」:[{0} {0} {term}「TermBulk9」, 「parent_category」:「父類別>> Cat s」, 「short_description」:「Test Term」, 「long_description」:「測試 「 」狀態「: 」標準「 },{ 」term_Name「: 」TermBulk9「, 」parent_category「: 」父類別>>貓的「, 」SHORT_DESCRIPTION「: 」測試期限「, 」 long_description「:」用於測試的術語「, 」status「:」Standard「 }, ] }所有值都不顯示 – Karthika