2013-08-28 17 views
5

Sto provando a scrivere un file CSV usando Jackson 2.2.2 (specialmente jackson-dataformat-csv) ma non riesco a farlo usare il ';' come fileseparatore.Jackson csv writer non usa il corretto separatore di colonne

sto utilizzando il seguente codice per inizializzare l'autore:

CsvMapper mapper = new CsvMapper(); 
CsvSchema schema = mapper.schemaFor(MyObject.class); 
schema = schema.withColumnSeparator(CSV_COLUMN_SEPARATOR); 

ObjectWriter myObjectWriter = mapper.writer(schema); 

Per creare il CSV faccio qualcosa di simile al seguente:

FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile); 
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(tempFileOutputStream, STREAM_BUFFER_SIZE); 
writerOutputStream = new OutputStreamWriter(bufferedOutputStream, FILE_ENCODING); 

myObjectWriter.writeValue(writerOutputStream, listOfMyObjects); 

Tuttavia, il file risultante utilizza ancora il default ' , 'come separatore di colonne. Quando controllo l'oggetto con il debugger ';' è impostato come separatore nell'oggetto, quindi credo che dovrebbe funzionare. Qualcuno sa cosa sto sbagliando o è un bug?

+2

Non ho mai cercato sul Web una risposta e ho scoperto che questa funzione non funziona nella versione 2.2.2 Funziona dalla versione 2.2.3 che è stata rilasciata 4 giorni fa ma non è disponibile nei repository di Maven ancora. – Ozzie

+1

Dovrebbe essere lì da un paio di giorni: http://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-csv/2.2.3/ – StaxMan

risposta

2

Se volete un'alternativa, utilizzare Open CSVCSVWriter:

public CSVWriter(Writer writer, char separator) 
+0

Sì, lo so. Preferisco OpenCSV, ma un collega ha già costruito la funzionalità con Jackson, quindi continuerò così. – Ozzie

1

Tutto quello che dovete fare è quello di recuperare l'output del metodo withColumnSeparator (per la versione 2.9.3):

schema = schema.withColumnSeparator(';'); 
mapper.writer(schema).writeValue(file, objectList); 

Questo dovrebbe consentire di utilizzare il separatore che si desidera.

Problemi correlati