2016-03-31 17 views
0

i farklı özellik adlarıBeanUtils: Farklı özellik adları i BeanUtils bir sorun var

ile Pojo için Harita dönüştürmek gerekir

varlık:

public class User { 
    private int id; 
    private String nickname; 
    private int agility; 

    public int getId() { 
     return id; 
    } 

    // getters and setters 
} 

Hedef uygulama API (XML-RPC üzerinden) HashMap döndürür böyle bir şeyle:

user_id => "123456" 
nickname => "Bob" 
agility => 30 

ama benim POJO sınıf user_id özelliği yok

Özellik adı çevirme user_id =>id? o bunu aldıktan sonra, anahtarı değiştirmek değiştirmek sonradan HashMap izin verilirse

ben bu durumda

+1

Dozer ve benzer fasulye haritalama kütüphaneleri, en iyi olan bahis. Ayrıca, keşfettiğiniz gibi JSON haritalama libsleri bunun için kullanılabilir. – kaqqao

cevap

1

BeanUtils benim durumumda için uygun değildir, ben Gson kütüphanesini kullandı. Gson'un özelliği - nesneyi json'a dönüştürür. Bundan sonra jsonu User sınıfına dönüştürüyorum. name mülkiyet açıklama damgasını @SerializedName

varlık sınıfı:

class User { 
    @SerializedName("user_id") 
    private int id; 
    private String name; 

    // getters and setters here 
    // .toString 
} 

kullanımı:

Map<String,String> apiObject = new HashMap<>(); 

apiObject.put("user_id","123123"); 
apiObject.put("name","Bob"); 

Gson gson = new Gson(); 
String json = gson.toJson(values); 
User user = gson.fromJson(json, User.class); 

System.out.println(user); 

örnek çıkışı:

User{id=123123, name='Bob'} 
1

için herhangi bir ek açıklama bulamadık.

map.put("id", map.remove("user_id")); 

Sonra fasulye doldurmak için beanutils kullanın:

User usr = new User(); 
BeanUtils.populate(usr, map); 
+0

teşekkürler, ancak 20 alan adı sorunum varsa? –

+0

Bir haritadaki 20 alanı ve veri haritanızın anahtarını değiştirmek için kullanabilirsiniz. – mks

+0

Bu çözüm alanları değiştirme listesini desteklemeyi gerektirir, çevik değil. n + 1 varlıklar ve 20+ alanlar -> destek cehennem. Ben gson ile hile hakkında düşünüyorum (ben daha sonra kontrol edip yazacağım) –

İlgili konular