2017-05-27 4 views
1

ich eine Web Application tue, und ich möchte eine Datei zu MongoDBConvert (CSV) Datei zu JSONObject Java

In JSP speichern wie habe ich diese:

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

In Action habe ich diese :

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

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

Und in Aktion ich habe dies:

FormFile file = theform.getThefile(); 

Bis hier funktioniert es richtig. Aber jetzt möchte ich diese Datei in ein JSONObject konvertieren. (Die Datei wird immer CSV-Datei)

Kann mir jemand helfen?

dank

Antwort

0

Schritt 1:

Wenn die CSV-Datei einfach analysiert werden soll (es gibt keine zitierte Felder oder in Feldern eingebettet Komma), können Sie ein einfaches Muster Matcher verwenden können, die spalten CSV-Felder

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

Schritt 2:

eine Model-Klasse erstellen. Lassen Sie die Modellklasse als Model benannt. Erstellen Sie einen Konstruktor mit allen Feldern der Klasse.

Schritt 3:

die CSV-Daten lesen.

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

Schritt 4:

Serialize zu JSON

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

So wird das ganze Programm sein:

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