Как изменить формат даты Джексона или правильно манипулировать данными даты? - PullRequest
0 голосов
/ 17 декабря 2018

Я создаю REST JAX-RS с Джерси и Джексоном и JavaScript Framework во внешнем интерфейсе, используя Typescript.

Моя проблема в том, что я не могу исправить информацию Дата , поэтому она не переводится в тип даты Typescript при запросе ее обратно.

Сценарий:

В интерфейсе я отправляю значение new Date() в запросе.Это значение в свойстве JSON: started: "2018-12-17T02:00:00.000Z".

Это мое свойство Java: private ZonedDateTime started; (я также пытался использовать старый тип util.Date, результат тот же).Значение, сохраненное в моем столбце PosgreSQL TIMESTAMP, равно: "2018-12-17 00:00:00".

Теперь запутанный бит находится в ответе, который создает Джексон, поле и значение: "started":"2018-12-17T00:00:00-02:00[America/Sao_Paulo]".Это значение, которое не переводится в тип даты Typescript, также new Date(started) не работает.Мне нужно обрезать все, что находится в скобках.

То, что я пробовал до сих пор:

1) Попытка игнорировать часовой пояс и использование LocalDateTime в Javaсвойство приводит к ошибке разбора, из-за Z в конце сгенерированной JS Date.

2) Я пытался добавить @JsonFormat() в получатели или поля, не сработало, значение ответабыло то же самое.

3) Создание следующего провайдера Джексона и его регистрация:

public class CustomJacksonProvider extends JacksonJaxbJsonProvider implements ContextResolver<ObjectMapper> {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    static {
        MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"));
    }

    public CustomJacksonProvider() {
        super();
        setMapper(MAPPER);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return MAPPER;
    }
}

Тоже безрезультатно.

Мой обходной путь в настоящее время: Я сохраняю все как строку и создаю из нее новую дату, когда мне нужны правильные типы или операции.

Я предполагаю, что изменение сериализации формата даты в Джексоне решит мою проблему, однако не стесняйтесьуказать на любые другие решения.Заранее спасибо.

...