为什么 Date 对 JSON 键的序列化与对 JSON 值的序列化不同?

Why does Date serialize for a JSON key differently than it does for a JSON value?

使用以下代码:

def date = new Date()
println new groovy.json.JsonBuilder([(date): date]).toString()

结果类似于

{"Fri Oct 28 15:00:45 ART 2016":"2016-10-28T18:00:45+0000"}

我期望在同一日期与键和值具有相同的表示形式。

我可以强制 JsonBuilder 输出与值格式相同的键吗?

事实上,JsonBuilder 将默认使用 new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") 格式化日期,我知道这不是您想要更改的。由于 "key" 部分是使用 toString() 方法序列化的,因此您有两种解决方案:使用 [date.format("yyyy-MM-dd'T'HH:mm:ssZ"): date] 或使用 metaProgramming 重载 Date.toString() (它将用于每个 Date 对象,不过,所以你可能不想要那个)。