2013-03-13 63 views
0

我想在控制器中使用以下代碼創建自定義json輸出,但在chrome休眠客戶端中收到錯誤「Unexpected token <」。相同的代碼適用於xml。Grails - 在生成控制器中的自定義JSON時出錯

def customJSON = { 

    def a = Student.list().get(0) 

    render(contentType:"application/json"){ 

     student(){ name(a.firstName) } 
    } 

} 

def customXml = { 

    def a = Student.list().get(0) 

    render(contentType:"text/xml"){ 

     student(){ name(a.firstName) } 
    } 

} 

回答

1

你的代碼將導致以下異常:

Message: Array elements must be defined with the "element" method call eg: element(value) 
    Line | Method 
->> 98 | invokeMethod  in grails.web.JSONBuilder 

的問題是,Grails的發送與異常的內容,但與「應用/ JSON」作爲內容類型的HTML響應。所以客戶認爲這是一個無效的JSON響應。

下面的代碼應該工作:

def a = Student.list().get(0) 

render(contentType:"application/json"){ 
      student(name : a.firstName) 
     } 
+0

感謝..你的建議工作的答覆。有什麼理由爲什麼相同的代碼適用於XML而不適用於JSON? – Deepak 2013-03-13 09:22:01

+0

它與Grails grails.web.JSONBuilder的實現有關。它期望方法參數爲:Map,Closure或List如果方法名爲'element' – 2013-03-13 09:36:11