将(CSV)文件转换为JSONObject Java

时间:2017-05-27 11:50:53

标签: java json mongodb

我正在做一个Web应用程序,我想将文件存储到MongoDB

在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文件)

任何人都可以帮助我吗?

感谢

1 个答案:

答案 0 :(得分: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);    
}