How can I get a map of the key/values of only the user-defined properties on one of my domain objects?
Problem is if I do this myself, I get my properties plus class
This is an old question, but I just ran across this requirement and found another solution that is worth answering here for others who come across this thread. I have put together an example based on that thread:
Sample Bean
class SampleBean {
long id
private String firstName
String lastName
def email
Map asMap() {
this.class.declaredFields.findAll { !it.synthetic }.collectEntries {
[ (it.name):this."$it.name" ]
}
}
}
Test Class
class Test {
static main(args) {
// test bean properties
SampleBean sb = new SampleBean(1,'john','doe','jd@gmail.com')
println sb.asMap()
}
}
The SampleBean
I put a variety of fields to show that it works, this is the output of the println:
[id:1, firstName:john, lastName:doe, email:jd@gmail.com]