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