java.sql.Dateフィールドを読み込み、Univocityを使用して次のように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);
でラインを解析するとき、私はcom.univocity.parsers.common.DataProcessingException: Error converting value 'Sat Apr 12 00:00:00 CEST 1986' using conversion com.univocity.parsers.conversions.TrimConversion
の追加情報で、次の例外Caused by: java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.String
を取得しています"12-04-1986"と私は変換を提供しようとしました "dd-MM-yyyy"、残念ながら無駄に。
「誕生日:12-04-1986」の予定されたメッセージを得るために私のコードには何が欠けていますか?
EDIT:java.util.Date
人のクラスを使用して:
// 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
}
java.util.DateにDateオブジェクトを変更し、上の正しい日付形式を適用しますjava.util.Dateオブジェクトが正常に印刷されていることを示します。
'あなたのbirthDateに@Formatアノテーションを追加する方が簡単なはずです。正確には私が存在することを望んでいた機能です。私はgithubのマニュアルには見つかりませんでしたが、この機能では、解析される実際のファイルには多くの日付オブジェクトがあり、その中には異なるフォーマットがあるため、日付解析が使いやすくなっています。今私は何を探すべきか分かっているので、 'AnotherTestBean.java'の例も見つけました。説明と助けてくれてありがとう! –