在使用'作为JSON'时,在grails控制器中更改地图中日期对象的值。

时间:2016-09-22 16:43:20

标签: json grails

在我的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 。 我认为由于时间戳的变化,日期已经改变。但无法弄清楚如何。

1 个答案:

答案 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