Bir hiyerarşik Map<String, Object>
ile eşleştirmem gereken bir proje üzerinde çalışıyorum; burada ikinci parametrenin String
veya Map<String, Object>
olması beklenir. Şimdiye kadar, ModelMapper harika çalıştı, ancak belirli bir dönüşümle ilgili sorun yaşıyorum. Model
basit bir işaretleyici arayüzü şu, Verilen:Haritadan Haritaya nasıl eşlenir?
class Client implements Model {
String firstName;
String lastName;
List<Organization> organizations = new ArrayList<>();
}
Organization
varsayarsak benim işaretleyici arayüzünü Model
uygular ama aksi keyfi yapılandırılmıştır, ben harita edebilmek istiyorum aşağıdaki Client
için:
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");
}});
}});
}};
Özetle: ModelMapper'ın harita tuşlarını bırakmasını ve yalnızca kuruluşun mülkiyetine girerken sadece değer listesini kullanmasını nasıl sağlayabilirim? Başarısız olan kuruluşlar mülkiyeti boş çıkıyor. Bunu yapmak için iyi bir nedenim olduğunu ve kötü bir örnek olduğunu varsayabilirsin!
Girişiniz için şimdiden teşekkür ederiz!
Düzenleme ben boşuna bir Collection<Model>
bir Map
dönüştürme idare edecek bir Converter
inşa etmeye kalkışmış. Verilen:
new Converter<Map, Collection<DataTransportObject>>() {
@Override
public Set convert(MappingContext<Map, Collection<DataTransportObject>> context) {
LOG.debug("Here");
Set<DataTransportObject> result = new HashSet<>();
return result;
}
}
bu iki sorun vardır:
- Görünüşe ModelMapper
Map
herhangi uygulama kaynağı olarak verilir nedenle zaman, miras bakmaz, dönüştürücü çalıştırılmaz. Örneğin, dönüştürücüyüHashMap
kabul edip, birHashMap
kaynağı olarak değiştirirseniz, o zaman çalışır. Genel bilgiler olmaksızınList
veyaSet
sınıfları context.getGenericDestinationType()
10. ModelMapper normal koşullarda karmaşık model grafikler oluşturmayı nasıl başarır?
Sorunuzun farklı bölümlerinde farklı şeyler soruyorsunuz gibi görünüyor. Haritanızı bir 'Client' örneğine dönüştürmek mi yoksa bir Listeye mi dönüştürmek istiyorsunuz? – VGR
Verilen harita bir 'Client' örneğine dönüştürülmelidir. Ancak, olduğu gibi, ModelMapper 'kuruluşlar' mülkünü ele almayacak ve boş bırakacaktır. MapMapper'ın harita değeri listesini 'kuruluşlar 'özelliğine itmesini istiyorum. – ironhardchaw
Bence BeanUtils veya ObjectMapper'a ihtiyacınız var. [http://stackoverflow.com/questions/739689/how-to-convert-a-java-object-bean-to-key-value-pairs-and-vice-versa][1 adresinde cevabı görebilirsiniz. ] [1]: http://stackoverflow.com/questions/739689/how-to-convert-a-java-object-bean-to-key-value-pairs-and-vice-versa –