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

Groovy 使用JsonOutput序列化日期时的时区,groovy,timezone,iso8601,Groovy,Timezone,Iso8601,我必须用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","s

我必须用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记录,我怀疑这是不可能的:

从这张罚单上看,似乎有一个解决办法,但它涉及到修改一个私有字段,这使得它非常脆弱和不优雅

groovy开发团队似乎也发现了可配置性的不足,因为即将推出的groovy 2.5.0版本现在有了一个可配置的组件,您可以使用该组件执行以下操作:

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"}

随附的文档为定制json序列化提供了很大的灵活性

这有关系吗?根据ISO 8601标准,
Z
+0000
是同义词。