2016-08-09 86 views
-2

Ich habe eine Myclass mit 11 "normalen" String-Attribute, und 12. ist eine Liste des Typs OtherClass - und diese Klasse hat 2 Attribute, 1 String und 1 intErstellen von Instanz einer Klasse durch Parsing der Werte von Attributen aus einem CSV (oder vielleicht anders?)

public class MyClass extends BaseEntity 
    private String string1; 
    private String string2; 
    // ... 
    private String string11; 
    private List<OtherClass> otherClasslist = new ArrayList<OtherClass>(); 
    getters setters 

, die die erste Klasse ist, und die zweite

public class OtherClass extends BaseEntity 
private String foo; 
private int bar; 
//getters setters 

und ich habe eine CSV mit Werten von Attributen von einer Instanz-Datei, und die Namen der Spalten in der ersten Zeile. Zum Beispiel:

1;2;3;4;5;6;7;8;9;10;11;foo1;bar1;foo2;bar2 

so;me;thi;ng;and;so;on;and;so;forth;and;on;foo;10 
so;me;thi;ng;and;so;on;and;so;forth;and;on;foo;10 (different values) 

und ein paar Zeilen wie diese

habe ich ein Repository für die Hauptklasse - und einfach für jede Zeile eine neue Instanz der Klasse MyClass zu erstellen und sie in das Repository speichern. Was ist der beste Winkel, um es zu approachieren? Sollte ich irgendwie die CSV analysieren, so habe ich eine Liste von Strings, die die Werte von Attributen enthält, und irgendwie von dort gehen? Auch wenn es eine Option überhaupt ist, habe ich eine Methode, die das Objekt in Repo speichert, wenn ich es in JSON habe, ist CSV> JSON Konvertierung möglich? Wenn die Liste (12. Attribut) ein Problem ist, das Sie ignorieren können, geben Sie mir einen Vorschlag für ein praktikables Lösungsmodell.

+2

Ich empfehle dringend, 'String []' anstelle von 11 'String's zu verwenden. – xenteros

Antwort

0

Sie sollten CSV wahrscheinlich nicht selbst analysieren, genauso wie Sie JSON nicht von Grund auf neu schreiben sollten. Es gibt etablierte Bibliotheken für beide.

CSV: OpenCSV

JSON: Jackson, GSON

unserialize von OpenCSV zu Ihrer benutzerdefinierten Klasse, dann einen JSON-Framework verwenden, um JSON zu serialisiert. Wenn Sie eine große Menge solcher Konvertierungen durchführen müssen, sollten Sie ein Batch-Framework wie Spring Batch verwenden.

Theoretisch ist eine direkte Konvertierung von CSV zu JSON möglich, da alle JSON-Frameworks programmgesteuert verwendet werden können, aber ich würde dies nicht unterstützen: Sie mischt Eingabe und Ausgabe zusammen. Ich bevorzuge es, eine kanonische Darstellung Ihrer Daten in Ihrem eigenen Code zu haben und diese der Eingabe und Ausgabe zuzuordnen.