2
我有由多行組成的第二值的一一行CSV:Apache的駱駝:解析與多線CSV文件值
field1,"this
is still
field2","field3"
我想使用Apache的駱駝就搞定了,它就像一個JSON這個(解析文件後):
{"field1":"field1","field2":"this
is still
field2","field3":"field3"}
但使用如下代碼:
from('something...')
.transform(simple('/path/demooneline.csv', File.class))
.unmarshal().bindy(BindyType.Csv, Demo.class)
.marshal().json(JsonLibrary.Jackson).log('${body}')
@CsvRecord(separator = ',')
class Demo {
@JsonView
@DataField(pos = 1)
private String field1
@JsonView
@DataField(pos = 2)
private String field2
@JsonView
@DataField(pos = 3)
private String field3
}
我GETT掀背:
{"field1":"field1","field2":"this","field3":null},
{"field1":"is still","field2":null,"field3":null},
{"field1":null,"field2":"field3","field3":null}
,它看起來像在3行分離的CSV,而不是與由引號分隔一些字段1行。默認情況下@CsvRecord有「quote」。有沒有辦法解析這種類型的CSV與駱駝(使用或不綁定)?
在你發佈的鏈接中寫道:走向標準化:應該引用包含換行符,雙引號和/或逗號的字段。 (如果它們不是,那麼該文件可能無法正確處理),如我的示例。 – Randomize 2014-08-31 05:51:07
是的,但據我所知,通過查看'Camel-2.13.2'中的'BindyCsvDataFormat'的源代碼,它不處理包含換行符的引用字段。 – 2014-08-31 06:44:49
有趣的是,在@CsvRecord源文件中有一個名爲'quote'的字段,我認爲它是指這個問題。 – Randomize 2014-08-31 07:52:10