将数据传输对象(DTO)转换为JSON。

4

我创建了一个用于将CSV文件转换为DTO然后转换为JSON结构的类,但是当我转换为JSON时,只得到CSV中的最后一行。

以下是我的代码:

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);
        }
    }

在这个方法中,我创建了一个仅包含单个值的JSON结构。

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

0

你不应该独立地读取所有行吗?

TermParsingDTO term = new TermParsingDTO();

这应该是:

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

在你的循环结束时:

terms.add(term);

那么你的所有记录都将在列表中。


当完成时,最后一个值会重复。{ "Term" : [ { "term_Name" : "TermBulk9", "parent_category" : "父类别>>Cat s", "short_description" : "测试术语", "long_description" : "用于测试的术语", "status" : "标准" }, { "term_Name" : "TermBulk9", "parent_category" : "父类别>>Cat s", "short_description" : "测试术语", "long_description" : "用于测试的术语", "status" : "标准" }, ] }所有值都不会显示。 - Karthika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接