我正在构建RESTful API,而我正在创建的端点正在使用命令对象来验证请求数据。我试图找出将验证错误呈现为json的最佳方法。对于xml响应,我遵循了Grails in Action一书中的建议并做了......
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
这种方法的问题是我使用Joda时间插件,因此当我尝试将地图渲染为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 :(得分:4)
怎么样?
render eventSaleDataCommand.errors.fieldErrors as JSON