好的,我知道这应该很容易。使用JsonViews的My Grails 3.2.5 REST服务器需要将日期返回给客户端,而不受客户端时区的影响。为了进行测试,我的客户端和服务器都在东部时间,因此无论如何都应该没有差异。但是我看到的是传出的JSON日期字符串已调整为GMT,因此它们增加了5个小时的时间。
我可以通过在Bootstrap中注册Date marshaller来克服对普通JSON的这种调整:
JSON.registerObjectMarshaller(Date) {
String fmt = "yyyy-MM-dd'T'HH:mm:ss'Z'"
return it.format(fmt)
}
但是,这对通过JsonView发送的域类日期没有影响。我尝试实现一些更改Jackson Date序列化程序的全局方法,但到目前为止无济于事。我该怎么做呢?文档和示例相互矛盾和混乱。
我的构建配置:
apply plugin:"org.grails.plugins.views-json"
compile "org.grails.plugins:views-json:1.1.2"
谢谢
最佳答案
您的代码示例使用的是JSON转换器API,该API与JSON View 无关。
为了实现您想要的,您要么需要自己管理 View :
model {
Book book
}
json {
published book.published.format(...)
}
或当前使用grails-views(RC1)的当前候选版本并实现一个转换器,在此进行描述:http://views.grails.org/1.2.x/#_custom_converters
编辑:要在 View 1.2.x中设置默认时区,可以使用几个配置选项:
grails.views.json.generator.timeZone: "EST"
和
grails.views.json.generator.dateFormat: "yyyy-MM-dd'T'HH:mm:ss'Z'"
关于json - Grails 3 JSON日期序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702254/