使用 JsonOutput 序列化日期时的时区



>我必须在json中序列化一个对象,其中日期必须在iso-8601中。问题是时区是+0000,我想要"Z"。知道吗?

class MyClass{
Date date = new Date()
String string = "hello"
}   
def myClass = new MyClass()
log.error("Json->"+JsonOutput.toJson(myClass))

输出:

{"date":"2018-05-25T08:16:14+0000","string":"hello"}

预计: 2018-05-25T08:16:14Z

我还没有找到一个好的方法来做到这一点是当前版本的 groovy,根据以下 groovy JIRA 票证,我怀疑这是不可能的:

凹槽-6854

阅读该票证似乎有一种解决方法,但它涉及修改一个私有字段,使其非常脆弱和不优雅。

似乎 groovy 开发团队也发现了缺乏可配置性的问题,因为即将推出的 groovy 2.5.0 版本现在有一个新的 JsonGenerator 类,您可以使用它执行以下操作:

import groovy.json.*
class MyClass { 
Date now = new Date()
}
def generator = new JsonGenerator.Options()
.dateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
.build()
println generator.toJson(new MyClass())

其中打印:

{"now":"2018-05-27T12:50:25Z"}

随附的 JsonGenerator.Options(( 构建器为自定义 json 序列化提供了很大的灵活性。

相关内容

  • 没有找到相关文章

最新更新