1
次のTSVデータをネストされたオブジェクトに解析しようとしていますが、「タイトル」フィールドは常にNestedクラス内でnullです。TSVデータをネストされたオブジェクトに解析する方法
私はTSVデータをオブジェクトに変換するメソッドを一番下に含めました。
value1 | metaData1 | valueA |
value2 | metaData2 | valueB |
value3 | metaData3 | valueC |
public class Data {
@Parsed(index = 0)
private String value0;
@Parsed(index = 1)
private String foo;
@Nested
MetaData metaData;
public static class MetaData {
@Parsed(index = 1)
private String title;
}
}
public <T> List<T> convertFileToData(File file, Class<T> clazz, boolean removeHeader) {
BeanListProcessor<T> rowProcessor = new BeanListProcessor<>(clazz);
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setDelimiter('|');
settings.setProcessor(rowProcessor);
settings.setHeaderExtractionEnabled(removeHeader);
CsvParser parser = new CsvParser(settings);
parser.parseAll(file);
return rowProcessor.getBeans();
}
私はindex = 1を使用すると、それは動作しますが、title属性で値を取得します。ただし、index = 2を使用すると、奇妙なnullが返されます。私は\ tを取り除くための質問を更新しました。これは誤字です。 –
私は 'Metadata.title'にindex = 2を設定しようとしました。最新バージョンを使用していますか? –
私は最新バージョンに更新して動作しています。ありがとう!それを動作させるために必要なことの1つは、まず外部クラスのネストされたクラスに使用したいインデックスを追加する必要があったことです。元の質問を更新しましたので、これを見ることができます - 属性 "foo"を見てください。これはどのように働くと思われますか? –