我正在嘗試使用Univocity讀取java.sql.Date字段並將其解析爲java bean代碼:java.lang.ClassCastException:使用Univocity時,java.util.Date不能轉換爲java.lang.String
public class Example {
public static void main(final String[] args) throws FileNotFoundException {
final BeanListProcessor<Person> rowProcessor = new BeanListProcessor<Person>(Person.class);
final CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setProcessor(rowProcessor);
parserSettings.setHeaderExtractionEnabled(false);
parserSettings.getFormat().setDelimiter('|');
final String line = "0|John|12-04-1986";
final CsvParser parser = new CsvParser(parserSettings);
parser.parseLine(line);
final List<Person> beans = rowProcessor.getBeans();
for (final Person person : beans) {
// Expected print: Birthday: 12-04-1986
System.out.println("Birthday: " + person.getBirthDate());
}
}
}
但parser.parseLine(line);
我想代表日期到它是如何在線路如解析線的時候,我收到以下異常Caused by: java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String
與com.univocity.parsers.common.DataProcessingException: Error converting value 'Sat Apr 12 00:00:00 CEST 1986' using conversion com.univocity.parsers.conversions.TrimConversion
其他信息「12-04-1986」,我嘗試提供轉換「dd-MM-yyyy」,遺憾的是無濟於事。
我在代碼中錯過了什麼以獲得期望的「生日:12-04-1986」系統?
編輯:使用java.util.Date
Person類:
// using the correct Date object!
import java.util.Date;
import com.univocity.parsers.annotations.Format;
import com.univocity.parsers.annotations.Parsed;
public class Person {
@Parsed(index=0)
private Integer id;
@Parsed(index=1)
private String name;
@Parsed(index=2)
@Format(formats = "dd-MM-yyyy")
private Date birthDate;
//getters and setters ommited
}
當改變Date對象的java.util.Date和對應用正確的日期格式java.util.Date對象的打印正確顯示預期的結果。
'應該更容易在您的birthDate上添加@Format註釋,正是我希望能夠呈現的功能。我在github的手冊中找不到它,但是這個特性使日期解析更加容易,因爲解析的實際文件有很多日期對象,而且其中一些有不同的格式。現在我知道該找什麼了,我也找到了'AnotherTestBean.java'的例子。感謝您的解釋和幫助! –