2012-08-03 20 views
7

Welche API sollte ich Java-Objekt in CSV konvertieren. Kann ich google-gson für die Konvertierung von Java-Objekten in das CSV-Format verwenden?Convert java Objekt in CSV

+0

Diese Frage ist wie dieser [Link] [1] [1]: http://stackoverflow.com/questions/3666007/how-to-serialize-object-to-csv-file –

+0

wäre es möglich mit gson? –

+0

Probieren Sie dieses http://stackoverflow.com/questions/1688099/converting-json-to-java –

Antwort

1

Bitte geben Sie mir Ihre spezifischen Anforderungen an GSON.

Gson stellt toJson() - und fromJson() - Methoden zum Konvertieren von Java-Objekten in JSON und umgekehrt bereit.

können Sie diese link verweisen. Dieser Link gibt die Liste der unter GSON zur Verfügung stehenden API

+1

Dies bezieht sich auf die Konvertierung von JSON zu einem Java-Objekt, aber ich würde gerne wissen, ob es möglich wäre CSV in Java konvertieren mit Gson –

+0

Ich denke, wir können CSV nicht direkt nach Gson konvertieren. Der Weg ist Gson in Json zu konvertieren und dann nur in Java-Objekt zu konvertieren. können Sie diesen Link für Wie Konvertieren von Java-Objekt zu/von JSON (Gson) http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson beziehen -api / – user1355253

1

Dies ist wirklich mehr eine Ergänzung zu dem obigen Beitrag über die Verwendung von Jackson CSV. Ein Problem, auf das ich stieß, war, dass es bei allen Eigenschaften im Objekt, die nicht im CSV-Schema enthalten waren, zu Fehlern kommen würde, wenn ich es programmatisch ausführte und keine Anmerkungen verwendete. Hier ist ein Beispielcode, der hilfreich sein kann. Wenn Sie mehr darüber erfahren möchten, warum der Filter und der Annotationsintrospektor notwendig sind, siehe here.

public class CsvWriter { 

private final static String CSV_FILTER_NAME = "csvFilter"; 

public void writeObjects(OutputStream outputStream, 
          List<?> objects, 
          CsvSchema csvSchema) throws IOException 
{ 
    HashSet<String> columnNames = new HashSet<String>(); 
    for (CsvSchema.Column column : csvSchema) { 
     columnNames.add(column.getName()); 
    } 

    SimpleBeanPropertyFilter csvReponseFilter = 
      new SimpleBeanPropertyFilter.FilterExceptFilter(columnNames); 
    FilterProvider filterProvider = new SimpleFilterProvider().addFilter(CSV_FILTER_NAME, csvReponseFilter); 

    CsvMapper csvMapper = new CsvMapper(); 
    csvMapper.setFilters(filterProvider); 
    csvMapper.setAnnotationIntrospector(new CsvAnnotationIntrospector()); 

    ObjectWriter objectWriter = csvMapper.writer(csvSchema); 
    objectWriter.writeValue(outputStream, objects); 
} 

private class CsvAnnotationIntrospector extends JacksonAnnotationIntrospector { 
    @Override 
    public Object findFilterId(Annotated a) { 
     return CSV_FILTER_NAME; 
    } 
} 

} 

und hier ist ein Beispiel dafür, wie es verwendet werden kann:

public class CsvWriterTest extends TestCase { 

public void testWriteObjects() throws Exception { 
    Vector <Entity> entities = new Vector<Entity>(); 
    entities.add(new Entity("Test entity 1", "Test description 1", "Test unused field")); 
    entities.add(new Entity("Test entity 2", "Test description 2", "Test unused field")); 

    CsvSchema csvSchema = CsvSchema.builder() 
      .addColumn("name") 
      .addColumn("description") 
      .setUseHeader(true) 
      .build() 
      .withLineSeparator("\r\n"); 

    CsvWriter csvWriter = new CsvWriter(); 
    csvWriter.writeObjects(System.out, entities, csvSchema); 
} 

public class Entity { 
    private String name; 
    private String description; 
    private String unusedField; 
    // constructor, getter and setter methods omitted for brevity 
} 

} 

Die Ausgabe der Testmethode ist:
Name, Beschreibung
"Testeinheit 1", "Testbeschreibung 1 "
"Test Einheit 2"," Testbeschreibung 2"

1

Die Bibliothek json2flatJSON umwandeln kann Dokumente zu CSV Format.

Es kommt nicht auf irgendwelche POJOs an, um CSV zu bekommen.

Schließlich ist es die Perspektive des Benutzers, dass, wie sie wollen, dass ihre JSON Dokumente in CSV Darstellung anzuzeigen.