Grails支持一些不一樣的方法來產生XML和JSON響應. 第一個是經過 render 方法. render方法能夠傳遞一個代碼塊來實現XML中的標記生成器:java
<!-- lang:java --> def list = { def results = Book.list() render(contentType:"text/xml") { books { for(b in results) { book(title:b.title) } } }
}json
使用render方法輸出JSON render 一樣被用於輸出JSON:dom
<!-- lang: java --> def list = { def results = Book.list() render(contentType:"text/json") { books { for(b in results) { book(title:b.title) } } }
}函數
自動XML列集(Marshalling)指針
(譯者注:在此附上對於列集(Marshalling)解釋:對函數參數進行打包處理得過程,由於指針等數據,必須經過必定得轉換,才能被另外一組件所理解。能夠說列集(Marshalling)是一種數據格式的轉換方法。)code
Grails一樣支持自動列集(Marshalling) domain類 爲XML,經過特定的轉換器.xml
首先,導入grails.converters 類包到你的controller(控制器):it
import grails.converters.*import
如今,你能夠使用下列高度易讀的語法來自動轉換domain類爲XML:打包
render Book.list() as XML 一個使用轉換器的替代方法是使用Grails的codecs 特性. codecs特性提供了 encodeAsXML 和 encodeAsJSON方法: def xml = Book.list().encodeAsXML() render xml 自動JSON列集(Marshalling)
Grails一樣支持自動列集(Marshalling)爲JSON經過一樣的機制. 簡單替代XML爲JSON:
render Book.list() as JSON
做爲替代,能夠使用encodeAsJSON達到相同的效果.