更改结果grails findAll或response方法

时间:2014-03-12 16:29:47

标签: json rest grails findall

目前我正在使用Grails开发RESTFull。我使用findAll方法来检索特定数据:

def query = PlannedEvent.where{}
query = query.where{rooms.id == i }
respond query.findAll()

和生成输出的响应方法:

{"class":"mp.ra.PlannedEvent","id":480,"baseEvent":{"class":"Event","id":1636},"equipment":[],"rooms":[{"class":"Room","id":22}]}

如何更改结果,以便提供有关baseEvent和Room的更多信息。

课程设置如下:

class PlannedEvent {    
   Event baseEvent

   static hasMany = [rooms:Room,equipment:Resource]
   static belongsTo = [Room,Event,Resource]

   static constraints = {
      equipment nullable:true
   }

1 个答案:

答案 0 :(得分:2)

您需要的是PlannedEvent域类的自定义JSON Marshaller。基本上你需要实现自己的marshller然后注册它。

这是关于如何实现自己的自定义JSON编组的优秀blog post

通过这种方式,您可以准确控制所有内容被编组到JSON中。