2014-09-19 46 views
2

我構建了一個RESTful API,並且我創建的端點正在使用命令對象來驗證請求數據。我試圖找出將驗證錯誤呈現爲json的最佳方法。對於XML響應我跟着行動書在Grails的建議,並沒有...Grails - 將驗證錯誤呈現爲JSON

response.status = 403 
    render(contentType: "text/xml") { 
     errors { 
      eventSaleDataCommand.errors.fieldErrors.each { err -> 
       field(err.field) 
        message(g.message(error: err)) 
       } 
      } 
     } 

此渲染XML響應效果很好,所以我想知道什麼渲染JSON響應建議的方法是什麼?

我想有誤差如何顯示所以JSON響應我加了一些控制:

def results = eventSaleDataCommand.errors.fieldErrors.toList() 
def errors = [] 
for (error in results) { 
    errors.add([ 
     'type'   : 'invalid_entry', 
     'field'   : error.field, 
     'rejected_value': error.rejectedValue, 
     'message'  : error.defaultMessage 
    ]) 
} 
render errors as JSON 

問題這種方法是我使用的喬達時間插件,所以我得到以下情況例外,當我試圖呈現地圖爲JSON:

Class org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller can not access a member of class org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone with modifiers "public".

任何人都知道解決的辦法?

+0

你已經嘗試將contentType改爲'text/json',不是嗎? – injecteer 2014-09-19 15:54:53

+0

是的。我得到一個異常:'java.lang.IllegalArgumentException:數組元素必須用「元素」方法調用來定義例如:element(value)' – user1866924 2014-09-19 16:05:23

回答

4

怎麼樣?

render eventSaleDataCommand.errors.fieldErrors as JSON