2016-07-11 13 views
0

In diesem Moment arbeite ich an der Generierung von CSV aus Objekt und ich blieb stecken. Ich weiß nicht, wie man csv für geschachtelte Klasse erzeugt. Zum Beispiel haben wir folgende Klassen:Generieren CSV-Datei von Objekt in Java

@Getter 
@Setter 
public class Person { 
    private int age; 
    private Name name; 
} 

@Getter 
@Setter 
public class Name { 
    private String firstName; 
    private String lastName; 
} 

Es gibt ein großes Problem für. Tatsächlich habe ich einige Bibliotheken wie Jackson und Commons csv getestet und keine Lösung gefunden. Das Hauptproblem ist, dass ich nicht weiß, welche Felder im Objekt sind und Header dynamisch vorbereiten müssen. Gibt es einen einfachen Weg oder eine Bibliothek, die diese Operation erlaubt? Ich wäre dankbar für irgendwelche Tipps.

+0

Gibt es einen bestimmten Grund, warum Sie CSV über z. JSON? –

+0

Es gibt einige Gründe –

Antwort

0

Sie könnten die Antwort erhalten, wenn Sie es googgelten. Es hat schon hier beantworten: Object to CSV

Super csv Verwendung: Using super csv to write in csv from object

+0

Eigentlich funktioniert es nicht mit verschachtelten Klasse, nur für pojos –

+0

Csvs funktionieren nicht für verschachtelte Klassen. Sie können auch im Excel-Format dargestellt werden. Geschachtelte Klassen können nicht in diesem Format dargestellt werden. Du musst mit einfachen Pojos gehen. –

0

Was ist der Zweck der CSV-Datei zu erstellen? Müssen Sie die Schachtelung von Klassen beibehalten? Konstruieren Sie die Objekte aus den CSV-Dateien neu?

Wenn Sie nur an den Daten Ihrer Objekte interessiert sind, sollten Sie in Erwägung ziehen, alles auf die primitiven Typen (oder die Klasse, für die Sie eine sinnvolle toString() haben) zu reduzieren, die Hierarchie zu verflachen. Alter, Name ==> Alter, Vorname, Nachname

Sie können Reflektion verwenden, um dynamisch die Hierarchie zu erhalten.

Muss der Ausgang ein CSV sein? Haben Sie darüber nachgedacht, ein anderes Format zu verwenden, das die Hierarchie wie JSON oder XML beibehält?