Possible Duplicate:
How to convert a Java object (bean) to key-value pairs (and vice versa)?
What is the best way to convert a List<POJO> to a List<Map<K,V>>.
Is there a custom method/ API?
K = field name of the POJO and V is the corresponding value
public class POJO implements Serializable{
String name;
String age;
//getters and setters
}
Sounds like a job for the good and old Introspector.
Working example:
// Don't be lazy like this, do something about the exceptions
public static void main(String[] args) throws Exception {
List<POJO> pojos = new ArrayList<POJO>();
POJO p1 = new POJO();
p1.setAge("20");
p1.setName("Name");
pojos.add(p1);
POJO p2 = new POJO();
// ...
System.out.println(convertCollection(pojos));
}
public static List<Map<String, ?>> convertCollection(Collection collection)
throws Exception {
List<Map<String, ?>> list = new ArrayList<Map<String, ?>>();
for (Object element : collection) {
list.add(getValues(element));
}
return list;
}
public static Map<String, ?> getValues(Object o)
throws Exception {
Map<String, Object> values = new HashMap<String, Object>();
BeanInfo info = Introspector.getBeanInfo(o.getClass());
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
// This will access public properties through getters
Method getter = pd.getReadMethod();
if (getter != null)
values.put(pd.getName(), getter.invoke(o));
}
return values;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With