How to convert a Java object (bean) to key-value pairs (and vice versa)?

Shahbaz picture Shahbaz · Apr 11, 2009 · Viewed 187.6k times · Source

Say I have a very simple java object that only has some getXXX and setXXX properties. This object is used only to handle values, basically a record or a type-safe (and performant) map. I often need to covert this object to key value pairs (either strings or type safe) or convert from key value pairs to this object.

Other than reflection or manually writing code to do this conversion, what is the best way to achieve this?

An example might be sending this object over jms, without using the ObjectMessage type (or converting an incoming message to the right kind of object).

Answer

StaxMan picture StaxMan · Jan 11, 2010

Lots of potential solutions, but let's add just one more. Use Jackson (JSON processing lib) to do "json-less" conversion, like:

ObjectMapper m = new ObjectMapper();
Map<String,Object> props = m.convertValue(myBean, Map.class);
MyBean anotherBean = m.convertValue(props, MyBean.class);

(this blog entry has some more examples)

You can basically convert any compatible types: compatible meaning that if you did convert from type to JSON, and from that JSON to result type, entries would match (if configured properly can also just ignore unrecognized ones).

Works well for cases one would expect, including Maps, Lists, arrays, primitives, bean-like POJOs.