2017-05-27 69 views
1

我在做一个Web应用程序,我想将文件存储到MongoDB的转换(CSV)文件的JSONObject的Java

在JSP中我有这样的:

<input type="file" name="thefile" id="thefile" value=""/> 

在ActionForm的我有这个:

private FormFile thefile; 
    public FormFile getThefile() { 
     return thefile; 
    } 

    public void setThefile(FormFile thefile) { 
     this.thefile = thefile; 
    } 

而且在行动中我有这样的:

FormFile file = theform.getThefile(); 

直到这里工作正常。但现在我想将此文件转换为JSONObject。 (该文件将始终是CSV文件)

任何人都可以帮助我吗?

感谢

回答

0

步骤1:

当待解析的CSV文件是简单的(有嵌入在字段没有引号的字段或逗号),则可以使用一个简单的模式匹配分裂CSV字段。

Pattern pattern = Pattern.compile(","); 

步骤2:

创建模型类。让模型类命名为Model。用该类的所有字段创建一个构造函数。

步骤3:

读CSV数据。

try (BufferedReader in = new BufferedReader(new FileReader(csvFile));) { 
    List<Player> players = in .lines() .skip(1) .map(line -> { 

    String[] x = pattern.split(line); 

    return new Player(Integer.parseInt(x[0]), x[1], x[2], x[3], Integer.parseInt(x[4])); }) .collect(Collectors.toList()); 
} 

第4步:

序列化JSON

ObjectMapper mapper = new ObjectMapper(); 
mapper.enable(SerializationFeature.INDENT_OUTPUT); 
String json = mapper.writeValueAsString(players); 

那么,整个程序将是:

Pattern pattern = Pattern.compile(","); 

try (BufferedReader in = new BufferedReader(new FileReader(csvFile));) { 
    List<Player>players = in .lines().skip(1).map(line - > { 
     String[] x = pattern.split(line); 
     return new Player(Integer.parseInt(x[0]), x[1], x[2], x[3], Integer.parseInt(x[4])); 
    }).collect(Collectors.toList()); 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.enable(SerializationFeature.INDENT_OUTPUT); 
    String json = mapper.writeValueAsString(players);  
}