在我的grails控制器中,我已将日期对象的值设置为:
def reportingTo = new Date("10/01/2013");
LinkedHashMap dynamicParams = new LinkedHashMap();
dynamicParams.put('reportingTo',reportingTo);
现在,我通常将reportingTo的值打印为
println(dynamicParams);
那么值是 Tue Oct 01 00:00:00 NPT 2013 但当我打印为json时:
println(dynamicParams as JSON);
然后该值变为" 2013-09-30T18:15:00Z" 。 如何检索与早期打印相同的值,即 Tue Oct 01 00:00:00 NPT 2013 。 我认为由于时间戳的变化,日期已经改变。但无法弄清楚如何。
答案 0 :(得分:2)
您可以根据需要更改JSON
日期格式,只需在ObjectMarshaller
中设置BootStrap.groovy
。
ObjectMarshallers:简单的Pogo / Pojo实现了 org.codehaus.groovy.grails.web.converters.marshaller.ObjectMarshaller 接口
设置如下
import grails.converters.JSON;
class BootStrap {
def init = { servletContext ->
JSON.registerObjectMarshaller(Date) {
//use any format as you want
return it?.format("MM/dd/yyyy")
}
}
def destroy = {
}
}
现在,如果您想要不同类的不同格式,那么您可以创建不同的ObjectMarshaller
并在Bootstrap.groovy
下注册它们
格雷格给出了一个很好的解释,你可以找到它 - > How to set date format for JSON converter in Grails