Map <String、String>からPOJOへの変換

auvy:

CSVファイルからレコードを読み取りList<T>、TがターゲットPOJOクラスであるを返すCSVローダークラスを作成しています

CSVの例: test.csv

CSVから抽出されたレコードから、POJOクラスのフィールドの0を取得できますDate値がどこサンプルCSVからは、#2を記録しcreatedDateています0実際の逆シリアル化が行われる前に、まず0有効な日付(など1970-01-01 09:00:00に変更するにはどうすればよいですか?

CSVファイルを読み取り、変換して返すプロセスを正常に作成しましたList<T>

  1. 解析: org.apache.commons.csv
  2. 変換:値を操作するためcom.fasterxml.jackson.databind.ObjectMapperに自分の一部の関数をオーバーライドすることをObjectMapper考えていますが、それを行う方法がわかりません。
private List<T> convertToObjectList(List<Map<String, String>> csvRecordMapList, Class<T> targetClass) {
  List<T> csvRecordObjList = new ArrayList<>();
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  ObjectMapper objectMapper = new ObjectMapper();
  objectMapper.setDateFormat(dateFormat);        
  objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
  for(Map<String, String> recordMap : csvRecordMapList)
    csvRecordObjList.add(objectMapper.convertValue(recordMap, targetClass));

  return csvRecordObjList;
}

私が持っている場合0のためにDate、目標POJOクラスのフィールド、私は(すでに予想されている)の下にエラーメッセージが表示されます。

Can not construct instance of java.util.Date from String value '0': not a valid representation (error: Failed to parse Date value '0': Unparseable date: "0")
auvy:

ObjectMapperを使用する代わりに、org.apache.commons.beanutils.BeanUtilsとConvertUtilsを使用しました。カスタマイズされたコンバーターを追加できることがわかりました。以下は私の更新されたソースコードです:

private List<T> convertToObjectList(List<Map<String, String>> csvRecordMapList, Class<T> targetClass)
    throws IllegalAccessException, InvocationTargetException, InstantiationException {
    List<T> csvRecordObjList = new ArrayList<>();
    ConvertUtils.register(getDateConverter(), Date.class);
    for (Map<String, String> recordMap : csvRecordMapList) {
        T targetClassObj = targetClass.newInstance();
        BeanUtils.populate(targetClassObj, recordMap);
        csvRecordObjList.add(targetClassObj);
    }

    return csvRecordObjList;
}

そして、これは私のカスタマイズされたコンバータです:

private static Converter getDateConverter() {
    return new Converter() {
        @SuppressWarnings({ "unchecked", "rawtypes" })
        @Override
        public Object convert(Class classType, Object value) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = value.equals("0") ? new Date(0) : sdf.parse((String) value);
            } catch (ParseException e) {
                // Do nothing
            }
            return date;
        }
    };
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Map <String、String>からMap <String、Object>への変換

分類Dev

[] map [string] stringからcsv [] byteへの慣用的な変換

分類Dev

Java List <String>からMap <String、Integer>への変換

分類Dev

Java List <String>からMap <String、Integer>への変換

分類Dev

Map <String、List <String >>からPair <String、String>へ

分類Dev

Map <String、String>からTreeMap <Integer、String>へ

分類Dev

POJOをMap <String、String>に変換しますか?

分類Dev

Map [String、Any]から(String、String)*に変換する方法

分類Dev

ジャクソン-List <Map <String、String >>のJavaオブジェクトからJson文字列への変換

分類Dev

map [string] MyStructからmap [string] MyInterfaceに変換する方法

分類Dev

Stringからmap [string] interface {} golangへ

分類Dev

Stream <String>からMap <String、Integer>へ

分類Dev

std :: map <std :: string、std :: string> JavaCPPの変換

分類Dev

Java Convert List <String>からMap <String、String>

分類Dev

Map <String、String>をPOJOに変換します

分類Dev

すべてのプリミティブデータ型のJSONからMap <String>への変換

分類Dev

HashSet <String>からString []への変換

分類Dev

map [string] * stringの使い方

分類Dev

構造体内のmap [string] string

分類Dev

Map <String、Object>をMap <String、String>に簡単に変換

分類Dev

Map <String、Object>をMap <String、String>に変換します

分類Dev

List <Map <String、Object >>をList <Map <String、String >>に変換する方法

分類Dev

ScalaでMap [String、String]をMap [String、Int]に変換します

分類Dev

POJOからMap <String、String>を生成します

分類Dev

の意味 ?Map <String、?>内

分類Dev

java streamは、POJOのリストをMap <String、List <POJO >>のMapに変換します

分類Dev

java:Map <String、Collection <Map <String、String >>>から値を抽出する方法

分類Dev

KotlinでMap <String、List <String >>をList <Map <String、String >>に変換します

分類Dev

List <Integer>からList <String>への変換

Related 関連記事

  1. 1

    Map <String、String>からMap <String、Object>への変換

  2. 2

    [] map [string] stringからcsv [] byteへの慣用的な変換

  3. 3

    Java List <String>からMap <String、Integer>への変換

  4. 4

    Java List <String>からMap <String、Integer>への変換

  5. 5

    Map <String、List <String >>からPair <String、String>へ

  6. 6

    Map <String、String>からTreeMap <Integer、String>へ

  7. 7

    POJOをMap <String、String>に変換しますか?

  8. 8

    Map [String、Any]から(String、String)*に変換する方法

  9. 9

    ジャクソン-List <Map <String、String >>のJavaオブジェクトからJson文字列への変換

  10. 10

    map [string] MyStructからmap [string] MyInterfaceに変換する方法

  11. 11

    Stringからmap [string] interface {} golangへ

  12. 12

    Stream <String>からMap <String、Integer>へ

  13. 13

    std :: map <std :: string、std :: string> JavaCPPの変換

  14. 14

    Java Convert List <String>からMap <String、String>

  15. 15

    Map <String、String>をPOJOに変換します

  16. 16

    すべてのプリミティブデータ型のJSONからMap <String>への変換

  17. 17

    HashSet <String>からString []への変換

  18. 18

    map [string] * stringの使い方

  19. 19

    構造体内のmap [string] string

  20. 20

    Map <String、Object>をMap <String、String>に簡単に変換

  21. 21

    Map <String、Object>をMap <String、String>に変換します

  22. 22

    List <Map <String、Object >>をList <Map <String、String >>に変換する方法

  23. 23

    ScalaでMap [String、String]をMap [String、Int]に変換します

  24. 24

    POJOからMap <String、String>を生成します

  25. 25

    の意味 ?Map <String、?>内

  26. 26

    java streamは、POJOのリストをMap <String、List <POJO >>のMapに変換します

  27. 27

    java:Map <String、Collection <Map <String、String >>>から値を抽出する方法

  28. 28

    KotlinでMap <String、List <String >>をList <Map <String、String >>に変換します

  29. 29

    List <Integer>からList <String>への変換

ホットタグ

アーカイブ