2017-07-31 51 views
0

林,例如動態數:Jsefa-反序列化CSV的列具有CSV與列的動態數

001, a ,b 
002, a, b, c 
003, a 

我想使用Jsefa(或任何其它建議)反序列化一類的形式:

@CsvDataType 
public class MyCsv{ 
    @CsvField(pos=0) 
    private String id 
    //?? 
    private List<String> data 
} 

不Jsefa支持呢?

回答

1

由於Google的搜索短語「jsefa csv動態列數」將此問題作爲首要答案返回,因此可能答案爲「否」。

我懷疑這將無法正常滿足你的要求,這是很醜陋的,但考慮到字段默認選項,你可以這樣做:

@CsvDataType 
public class MyCsv { 
    @CsvField(pos=0) 
    private String id 
    @CsvField(pos=1) 
    private String data1 
    @CsvField(pos=2) 
    private String data2 
    @CsvField(pos=3) 
    private String data3 
    @CsvField(pos=4) 
    private String data4 
    @CsvField(pos=5) 
    private String data5 
    ... 
    @CsvField(pos=N) 
    private String dataN 
} 

與無法等領域CSV中的值將只是null

對於一個更清潔的解決方案,我懷疑你需要實現自己的CsvLowLevelDeserializer,這可能會做與CsvLowLevelDeserializerImpl一樣的大部分工作,但對於最後一個字段,它可以超越分隔符來獲取多個值。

最後,CSV是一種非常簡單的格式來編寫您自己的解析器 - 根據您的需要,這可能是最直接的選擇。