Grails3JSON日期序列化

Grails3JSON日期序列化,json,date,grails,serialization,Json,Date,Grails,Serialization,好吧,我知道这应该很容易。使用JsonViews的Grails 3.2.5 REST服务器需要将日期返回给客户端,而不受客户端时区的影响。对于测试,我的客户端和服务器都在东部时间,所以无论如何应该没有区别。但我看到的是,传出的JSON日期字符串被调整为GMT,因此它们可以添加5个小时 我可以通过在Bootstrap中注册一个日期封送器来克服常规JSON的这种调整: JSON.registerObjectMarshaller(Date) { String fmt = "yyyy-MM-dd

好吧,我知道这应该很容易。使用JsonViews的Grails 3.2.5 REST服务器需要将日期返回给客户端,而不受客户端时区的影响。对于测试,我的客户端和服务器都在东部时间,所以无论如何应该没有区别。但我看到的是,传出的JSON日期字符串被调整为GMT,因此它们可以添加5个小时

我可以通过在Bootstrap中注册一个日期封送器来克服常规JSON的这种调整:

JSON.registerObjectMarshaller(Date) {
    String fmt = "yyyy-MM-dd'T'HH:mm:ss'Z'"
    return it.format(fmt)
}

但是,这对通过JsonView发送的域类日期没有影响。我曾试图实现一些更改Jackson日期序列化程序的全局方法,但到目前为止没有任何效果。我该怎么做?文档和示例相互冲突,令人困惑

我的构建配置:

apply plugin:"org.grails.plugins.views-json" 
compile "org.grails.plugins:views-json:1.1.2"

Thx,J

您的代码示例使用的是JSON转换器API,它与JSON视图无关

要实现所需,您需要自己管理视图:

model {
   Book book
}

json {
    published book.published.format(...)  
}
或者当前使用grails视图(RC1)的当前候选版本,并实现一个转换器,如下所述:

编辑:要在views 1.2.x中设置默认时区,可以使用以下几个配置选项:

grails.views.json.generator.timeZone:“EST”


grails.views.json.generator.dateFormat:“yyyy-MM-dd'T'HH:MM:ss'Z'”

我知道我展示的代码与json视图无关,但它确实说明了这个问题通常是可以解决的,至少对于通过json转换器的任何事情都是如此。JSON视图是另一回事。我会研究RC1版本,看看是否有成效,然后再报告。运气不好。我已经实现了一个转换的、足够简单的,但是在grailswar文件中,JsonGenerator$Converter应该在哪里结束呢?在没有看到任何效果之后,我把它贴满了我认为应该是“src/main/resources/META-INF/services/grails.plugin.json.builder.jsonggenerator$Converter”的地方,但是这个转换器从来没有被访问过。我不需要转换器。我只需要更改JsonViewGeneratorConfiguration中默认为“GMT”的时区。这可以被配置覆盖吗?太好了!使用了时区的配置,我已经准备好了。为了避免调整+-1小时,tz应该是“America/New_York”。“文档和示例相互冲突且令人困惑。”如果您能在grails视图中指出github问题中的确切含义,那么它可以得到改进。