43

JSON文字列をクラスのリストに逆シリアル化するには、StackOverflowの質問にリストされているさまざまな方法

タイプ 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 つのタイプはどちらも機能しますが、これらの実装の違いは何ですか?

4

2 に答える 2

41

を構築した後JavaType、両方が同じ逆シリアル化機能を呼び出すため、唯一の違いはジェネリック型の処理方法です。

2つ目は完全に静的であるため、型はコンパイル型で認識されている必要があり、変更することはできません。したがって、基本的なクラスリテラルを使用するのと似ています。

1つ目は動的であるため、パラメーター化に関してさまざまなものを構築するために使用できます。

個人的には、すべての場合に最初の選択肢を好みます(匿名の内部クラスの作成を回避します)が、2番目の選択肢の方が読みやすい場合があります。

于 2012-08-14T17:39:47.440 に答える