2 番目のパラメーターがorMap<String, Object>
であると予想される階層からマップする必要があるプロジェクトに取り組んでいます。これまでのところ、ModelMapper はうまく機能していますが、特定の変換に問題があります。次の場合、は単なるマーカー インターフェイスです。String
Map<String, Object>
Model
class Client implements Model {
String firstName;
String lastName;
List<Organization> organizations = new ArrayList<>();
}
Organization
私のマーカーインターフェイスを実装すると仮定しますModel
が、それ以外は任意に構造化されているため、次のものを にマップできるようにしたいと思いますClient
。
Map source = new HashMap(){{
put("firstName", "John"),
put("lastName", "Smith"),
put("organizations", new HashMap(){{
put("0", new HashMap(){{
put("id", "1234");
}});
put("abc", new HashMap(){{
put("id", "5678");
}});
}});
}};
要約すると、組織のプロパティにプッシュするときに、ModelMapper にマップ キーをドロップさせ、値リストのみを使用させるにはどうすればよいでしょうか。これに失敗すると、組織のプロパティは空になります。私がこれをしたいのには十分な理由があり、悪い例があると思うかもしれません!
ご意見をお寄せいただきありがとうございます。
編集
a から aへのConverter
変換を管理するa を構築しようとしましたが、役に立ちませんでした。与えられた:Map
Collection<Model>
new Converter<Map, Collection<DataTransportObject>>() {
@Override
public Set convert(MappingContext<Map, Collection<DataTransportObject>> context) {
LOG.debug("Here");
Set<DataTransportObject> result = new HashSet<>();
return result;
}
}
これには 2 つの問題があります。
- どうやら ModelMapper は継承を見ていないため、の実装が
Map
ソースとして与えられた場合、コンバーターは実行されません。たとえば、ソースとしてHashMap
a を受け入れて渡すようにコンバーターを変更すると、機能します。HashMap
context.getGenericDestinationType()
一般的な情報を持たない戻り値List
またはSet
クラス。では、ModelMapper は通常の状況で複雑なモデル グラフをどのように構築するのでしょうか?