JSON文字列をクラスのリストにデシリアライズするには、 StackOverflow question
タイプ1( ドキュメントリンク ):
List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));
タイプ2( ドキュメントリンク ):
List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });
上記の2つのタイプは両方とも仕事をしますが、これらの実装の違いは何ですか?
JavaType
を構築した後、両方とも同じ逆シリアル化機能を呼び出すため、唯一の違いはジェネリック型の処理方法です。
2番目は完全に静的であるため、タイプはコンパイルタイプで認識される必要があり、変更できません。したがって、基本的なクラスリテラルを使用することに似ています。
最初のものは動的であるため、パラメーター化に関してさまざまなものを構築するために使用できます。
個人的には、すべてのケースで最初の選択肢を好みます(もう1つの匿名内部クラスの作成を回避します)が、2番目の方が読みやすいかもしれません。