LinkedHashMapをカスタムJavaオブジェクトに変換する方法

ルーカス:

RESTful WSを介して1つのアプリから別のアプリにデータを取得しようとしていますが、機能しますが、キャストできないため、このデータを使用できません... WSは次のようなオブジェクトのリストを返します。

{id=1, forename=John, surname=Bloggs, username=jbloggs, role=Graduate Developer, office=London, skills=[{technology=Java, experience=2.5}, {technology=Web, experience=2.0}, {technology=iOS, experience=0.0}, {technology=.NET, experience=0.0}]}

取得するには、JacksonのObjectMapperを使用します。

ObjectMapper mapper = new ObjectMapper();

    List<ConsultantDto> list = new ArrayList<ConsultantDto>();


    try {

        list = mapper.readValue(con.getInputStream(), ArrayList.class);

    } catch (JsonGenerationException e) {

        e.printStackTrace();

    } catch (JsonMappingException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }

その後、3行のコードがあります。

System.out.println(list.get(0));
System.out.println(list.get(0).getForename());
return list;

このメソッドの戻り値は、ブラウザに正しいデータを表示する他のWebサービスに渡されるためです。2つの印刷行で興味深いことが起こります。1つはこの投稿の先頭からデータを印刷しますが({id:1 ...})、もう1つは例外をスローします。

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxx.web.dto.rp.ConsultantDto

ConsultantDtoとSkillDtoは、すべてのプロパティがWSからのデータと一致するように設定された2つの正当なクラスであり、すべてのゲッター/セッターが配置されています。私に関する限り、LinkedHashMapはものをキーと値のペアとして格納するため、この例外がどこから発生するのかわかりません。どうすれば修正できますか。ObjectMapperが値を正しく解析しないのはなぜですか(リストではなく単一のConsultantDtoを取得した場合に実行されます)。

Enno Shioji :

これを行う必要があります:

List<ConsultantDto> myObjects =
    mapper.readValue(jsonInput, new TypeReference<List<ConsultantDto>>(){});

(このSOの答えから

使用しなければならない理由TypeReferenceは、Javaの不運な癖のためです。Javaに適切なジェネリックスがあれば、構文は機能したと思います。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

SpringでRequestHeaderをカスタムオブジェクトに変換する方法

分類Dev

Javaで文字列値をカスタムモデルオブジェクトに変換する方法は?

分類Dev

Javaで文字列値をカスタムモデルオブジェクトに変換する方法は?

分類Dev

カスタムクラスオブジェクトをNSDataに変換する

分類Dev

カスタムクラスオブジェクトをObject []に変換する

分類Dev

Pythonでカスタムクラスオブジェクトをタプルに変換する方法は?

分類Dev

カスタム形式でオブジェクトを文字列に変換する

分類Dev

Pythonで辞書リストをカスタムオブジェクトに変換する方法

分類Dev

Python既存のネイティブdictをカスタムdictオブジェクトに変換する方法は?

分類Dev

SQLリターンをカスタムオブジェクトに変換する方法は?

分類Dev

JSON文字列をJavaでカスタムオブジェクトに変換する

分類Dev

カスタムのネストされたリストXMLをそれぞれのJavaオブジェクトに変換する方法

分類Dev

カスタムのネストされたリストXMLをそれぞれのJavaオブジェクトに変換する方法

分類Dev

toDF()を使用してカスタムJavaクラスオブジェクトのRDDをDataFrameに変換する方法は?

分類Dev

ArrayList <Object>のリストをカスタムオブジェクトjava11 Spring boot 2.1に変換する最良の方法は何ですか

分類Dev

PowershellでXMLドキュメントをカスタムクラスオブジェクトに変換する

分類Dev

カスタムjavascriptオブジェクトをjsonに変換します

分類Dev

カスタムオブジェクトのArrayListをJSONに変換します

分類Dev

文字列値をカスタムオブジェクトのリストに変換する

分類Dev

カレンダーオブジェクトを特定のタイムゾーンに変換する方法

分類Dev

辞書の配列をカスタムオブジェクトにすばやく変換する

分類Dev

Swift:ObjectMapperを使用してJSON文字列をカスタムオブジェクトの配列に変換する

分類Dev

オブジェクトをGUIDに変換するJson.NETカスタムValueProvider

分類Dev

DataSnapshotをカスタム構造体オブジェクトに変換する-Swift4

分類Dev

HadoopパスオブジェクトをJavaファイルオブジェクトに変換する方法

分類Dev

UnixタイムスタンプをSwiftNSDateオブジェクトに変換する方法は?

分類Dev

Rで文字のタイムスタンプを日時オブジェクトに変換する方法

分類Dev

Rで文字のタイムスタンプを日時オブジェクトに変換する方法

分類Dev

APIタイムスタンプをPythonの日時オブジェクトに変換する方法

Related 関連記事

  1. 1

    SpringでRequestHeaderをカスタムオブジェクトに変換する方法

  2. 2

    Javaで文字列値をカスタムモデルオブジェクトに変換する方法は?

  3. 3

    Javaで文字列値をカスタムモデルオブジェクトに変換する方法は?

  4. 4

    カスタムクラスオブジェクトをNSDataに変換する

  5. 5

    カスタムクラスオブジェクトをObject []に変換する

  6. 6

    Pythonでカスタムクラスオブジェクトをタプルに変換する方法は?

  7. 7

    カスタム形式でオブジェクトを文字列に変換する

  8. 8

    Pythonで辞書リストをカスタムオブジェクトに変換する方法

  9. 9

    Python既存のネイティブdictをカスタムdictオブジェクトに変換する方法は?

  10. 10

    SQLリターンをカスタムオブジェクトに変換する方法は?

  11. 11

    JSON文字列をJavaでカスタムオブジェクトに変換する

  12. 12

    カスタムのネストされたリストXMLをそれぞれのJavaオブジェクトに変換する方法

  13. 13

    カスタムのネストされたリストXMLをそれぞれのJavaオブジェクトに変換する方法

  14. 14

    toDF()を使用してカスタムJavaクラスオブジェクトのRDDをDataFrameに変換する方法は?

  15. 15

    ArrayList <Object>のリストをカスタムオブジェクトjava11 Spring boot 2.1に変換する最良の方法は何ですか

  16. 16

    PowershellでXMLドキュメントをカスタムクラスオブジェクトに変換する

  17. 17

    カスタムjavascriptオブジェクトをjsonに変換します

  18. 18

    カスタムオブジェクトのArrayListをJSONに変換します

  19. 19

    文字列値をカスタムオブジェクトのリストに変換する

  20. 20

    カレンダーオブジェクトを特定のタイムゾーンに変換する方法

  21. 21

    辞書の配列をカスタムオブジェクトにすばやく変換する

  22. 22

    Swift:ObjectMapperを使用してJSON文字列をカスタムオブジェクトの配列に変換する

  23. 23

    オブジェクトをGUIDに変換するJson.NETカスタムValueProvider

  24. 24

    DataSnapshotをカスタム構造体オブジェクトに変換する-Swift4

  25. 25

    HadoopパスオブジェクトをJavaファイルオブジェクトに変換する方法

  26. 26

    UnixタイムスタンプをSwiftNSDateオブジェクトに変換する方法は?

  27. 27

    Rで文字のタイムスタンプを日時オブジェクトに変換する方法

  28. 28

    Rで文字のタイムスタンプを日時オブジェクトに変換する方法

  29. 29

    APIタイムスタンプをPythonの日時オブジェクトに変換する方法

ホットタグ

アーカイブ