Groovy 使用JsonOutput序列化日期时的时区
我必须用json序列化一个对象,其中日期必须在iso-8601中。问题是时区是+0000,我想要的是“Z”。有什么想法吗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
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
是同义词。