When I want to test a customized "render as JSON " method, I used the following code
class BootStrap{
def init = { servletContext ->
....
println "change the json before format"
JSON.registerObjectMarshaller(Date) {
println "JSON DATE MARSHAL"
return it.format("yyyy-MM-dd HH:mm:ss")
}
println "change the json after format"
}
}
but what printed in the console is like this:
| Compiling 1 source files
| Running Grails application
Active MQ start. ConsumerURL is failover:ssl://xxx.
change the json before format
change the json after format
|Server running. Browse to http://xxx
the strange thing is that the "JSON DATE MARSHAL"didn't be printed. But it worked when I put the code in a controller.
I don't know what happened.
Any suggestion will be appretiated.
Update: Like railsdog said, it seems the closure in the init didn't work.
What I supposed the date format in JSON is like this:2016-12-15 16:44:21
But what I get is 2016-12-15T08:44:21Z.
When I put the marshaller in controller, it worked, and the date format in JSON is as expected:
2016-12-15 16:44:21.
I also get the console output:"JSON DATE MARSHAL".
Instead of registering marshaller check out property
grails.databinding.dateformatsin your grails application config. You can add there more different date formats which should be handled by your app.