Rest Grails-将验证错误呈现为JSON

Rest Grails-将验证错误呈现为JSON,rest,grails,grails-2.0,Rest,Grails,Grails 2.0,我正在构建一个RESTful API,我正在创建的端点正在使用命令对象来验证请求数据。我试图找出将验证错误呈现为json的最佳方法。对于xml响应,我遵循了《Grails in Action》一书中的建议,并 response.status = 403 render(contentType: "text/xml") { errors { eventSaleDataCommand.errors.fieldErrors.each { err ->

我正在构建一个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 time插件,所以当我尝试将地图呈现为JSON时,会出现以下异常:

类org.codehaus.groovy.grails.web.converters.marshaller.json.GenericJavaBeanMarshaller无法访问类org.joda.time.tz.DateTimeZoneBuilder$PrecalculatedZone的成员,带有公共修饰符

有人知道解决这个问题的方法吗?

怎么样

render eventSaleDataCommand.errors.fieldErrors as JSON

您已尝试将contentType更改为text/json,是吗?是的。我得到一个异常:java.lang.IllegalArgumentException:数组元素必须使用元素方法调用来定义,例如:elementvalue