Spring Rest API, возвращающий объект / объект с локальной датой joda, местным временем, временем даты, должен отображать форматированную дату или время

#spring #jodatime #spring-rest #wicketstuff

#spring #jodatime #spring-rest #wicket stuff

Вопрос:

У меня есть spring rest api (фактически apache wicket rest api поверх spring project), который возвращает объект со свойством, которое является joda LocalDate .

Все в порядке, за исключением того, что joda LocalDate / LocalTime / DateTime … они возвращаются в этом формате:

   "createdDate": {
    "year": 2019,
    "dayOfMonth": 15,
    "dayOfWeek": 1,
    "era": 1,
    "weekOfWeekyear": 16,
    "secondOfMinute": 21,
    "millisOfSecond": 455,
    "dayOfYear": 105,
    "millisOfDay": 72861455,
    "yearOfCentury": 19,
    "weekyear": 2019,
    "minuteOfHour": 14,
    "secondOfDay": 72861,
    "yearOfEra": 2019,
    "centuryOfEra": 20,
    "minuteOfDay": 1214,
    "monthOfYear": 4,
    "hourOfDay": 20,
    "zone": {
      "fixed": false,
      "uncachedZone": {
        "cachable": true,
        "fixed": false,
        "id": "Australia/Perth"
      },
      "id": "Australia/Perth"
    },
    "millis": 1555330461455,
    "chronology": {
      "zone": {
        "fixed": false,
        "uncachedZone": {
          "cachable": true,
          "fixed": false,
          "id": "Australia/Perth"
        },
        "id": "Australia/Perth"
      }
    },
    "equalNow": false,
    "afterNow": false,
    "beforeNow": true
  },
 

Я ожидаю, что значение будет в этом формате yyyy-MM-dd'T'HH:mm:ss .

Я попытался использовать JsonFormat аннотацию к указанному полю, но безуспешно.

 ...
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
@Field("createdDateS")
private DateTime createdDate;
...
 

Спасибо!

Ответ №1:

 <dependency>
  <groupId>com.fasterxml.jackson.datatype</groupId>
  <artifactId>jackson-datatype-joda</artifactId>
  <version>2.8.7</version>
</dependency>
 

Добавьте вышеуказанную зависимость maven.

Комментарии:

1. простое добавление вышеуказанной зависимости приведет к возврату объектов joda в форматированную строку?

2. @BorgyManotoy Да, я должен, потому что Джексон автоматически регистрирует модуль Joda, когда JodaModule находится в пути к классу.

3. Я попытался добавить / удалить это: @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") но все равно не повезло. Он по-прежнему не отображается как форматированная строка.

4. вам просто нужно добавить зависимость в pom, не удаляйте @JsonFormat(shape = JsonFormat . Форма. СТРОКА, шаблон = «гггг-ММ-дд’Т’Ч: мм: сс»)

5. Я использовал аннотацию version 2.9.8 и JsonFormat, которая не удалялась. Тем не менее, он отображается как объект вместо форматированной строки. Для этого не нужны другие конфигурации?