2015-02-24 39 views
1

我試圖將Grails域對象轉換爲Map。我有一個使用Apache Commons BeanUtils'PropertyUtils.describe爲POGO做的代碼。但是,在域對象上使用相同的代碼並不適用,因爲Grails框架添加了所有的東西。我希望能夠將任何對象轉換爲僅具有聲明字段的Map,就像Grails將域對象轉換爲JSON一樣。哪些功能可以幫助我實現這一目標?如何獲取Grails域對象中的聲明屬性?

+1

'domainObject.domainClass.persistedProperties'讓你更接近嗎? – 2015-02-24 13:37:39

+0

它可以,但我正在尋找一種更適用於(幾乎)任何應用程序中的Groovy對象的通用解決方案。像繞過Groovy和Grails添加的所有功能。 – 2015-02-24 13:43:09

+1

不知道你可以,由於不同的方式處理屬性... groovy方法(afair)是做'像'domainObject.class.declaredFields.findAll {!it.synthetic} .name'的東西,但我不是確定這將如何與Grails域類或動態添加的屬性 – 2015-02-24 14:20:15

回答

0

我建議這樣的事情您的域類中:

public Map asMap() { 
     this.class.declaredFields.findAll { !it.synthetic }.collectEntries { 
      [ (it.name):this."$it.name" ] 
     } 
    } 

大約有同樣的問題,其他問題,你試試這個? Grails/Groovy - Domain Object - Map of its Properties