Часовой пояс при сериализации даты с помощью JsonOutput - PullRequest
0 голосов
/ 25 мая 2018

Я должен сериализовать объект в 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

1 Ответ

0 голосов
/ 27 мая 2018

Я не нашел хорошего способа сделать это, это текущие версии groovy, и в соответствии со следующим паспортом JIRA, я подозреваю, это невозможно:

GROOVY-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.

...