2014-03-12 26 views
1
渲染JSON

我有下面的代碼在Groovy實現JSON:Groovy中

def index = { 
    def list = WordList.list() 
    render(contentType:"text/json"){ 
     LISTS { 
      for(item in list){ 
       LIST (NAME: item.name, ID: item.id); 
      } 
     } 
    } 
} 

幾乎工程,但它不顯示多個結果,即名稱和ID領域被覆蓋在每個週期導致只有最後一個記錄得到返回。什麼是正確的語法來得到這個工作?

回答

2
def list = WordList.list() 
list = list.collect { [name: it.name, id: it.id] } 

render(contentType: 'application/json') { 
    [lists: list] 
} 
+0

謝謝!我如何在每個單獨的名稱/ ID之前添加JSON標籤'LIST'? – maloney

+1

你不能有一個多個相同的密鑰地圖 –

+0

是的,什麼tim_yates說。一旦你意識到JSON只是一個MAP,它會讓你更容易。 – Gregg

3

我在這種情況下的解決方案是顯式構建JSON映射,然後將其渲染爲JSON。

一個例子:

def list = WordList.list() 
def json = [] 
list.each{ item -> 
    json << [name: item.name, id: item.id] 
} 
render json as JSON 

您需要導入grails.converters.JSON使用這種方法。