私は、opencsvアノテーションを使用して読み書き可能なcsvファイルにopencsvを使用しています。 私のbeanはプリミティブだけでなく、JavaのHashMap
も持っています。 は今、私は何をしたい、私は両方で、この作業は、読み取り/書き込み取得したいのですが型hashMapのフィールドを書き込むためのMappingStragety
public class MyBean {
@CsvBindByName(column = "ID")
private int id;
@CsvBindByName(column = "PROPERTIES")
private Map<String, String> sampleMap = new HashMap<String, String>();
ID, property1, property2...
1, value1, value2.....
することです。
この場合、デフォルトのMappingStrategyは機能しません。カスタムMappingStrategyを作成してもHashMap
フィールドには意味がありません。すべてのマップを反復するまでは完全なフィールドリストがわからないからです。
カラム名を取得する別の方法は、Beanのリストから1つのBeanを読み込むことです。そして、HashMapにアクセスしてヘッダを作成してください(ハッシュマップキーは私のケースではBean全体に固定されています)。
MappingStrategyはクラスレベルのメタデータにのみ関心があります。フィールドなどのように
public static Field[] getAllFields(Class<?> cls) {
List allFieldsList = getAllFieldsList(cls);
return (Field[])allFieldsList.toArray(new Field[allFieldsList.size()]);
}
は、CSVヘッダーを作成するための実際のデータへのアクセスを得ることは行うには自然な方法のようには見えません。
これを解決する方法についてのアドバイスはありますか?
Map
フィールドを持つ豆に読み書きすることができる他のライブラリに私を指摘してください。
乾杯!
正確には、まだCSVファイルがありません。だから、執筆は私の最初の一歩です。 Map> ..あなたは、そのMapに何が含まれているかを詳しく説明できますか? –
brownfox