Я создаю 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;
}
}
Тоже безрезультатно.
Мой обходной путь в настоящее время: Я сохраняю все как строку и создаю из нее новую дату, когда мне нужны правильные типы или операции.
Я предполагаю, что изменение сериализации формата даты в Джексоне решит мою проблему, однако не стесняйтесьуказать на любые другие решения.Заранее спасибо.