我必须在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:14 Z
答案 0 :(得分:0)
我还没有找到一个很好的方法来做这个当前版本的groovy并且根据以下groovy JIRA票我怀疑它是不可能的:
阅读该票据似乎有一种解决方法,但它涉及修改私有字段,使其非常脆弱和不优雅。
似乎groovy开发团队已经确定缺乏可配置性,因为即将推出的2.5.0版本的groovy现在有new JsonGenerator class,您可以使用JsonGenerator.Options() builder执行以下操作:
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"}
随附的https://codepen.io/bashirpour/pen/JvgeYy为自定义json序列化提供了很大的灵活性。