Передача LocalDateTime из одного микросервиса в другой в качестве параметра Post Body

#spring-boot #java-8

#весенняя загрузка #java-8

Вопрос:

У меня есть приложение, созданное поверх Spring boot и Java8. Я пытаюсь передать объект LocalDateTime из одного микросервиса в другой. Когда я пытаюсь это сделать, я получаю следующую ошибку.

 "JSON parse error: Unexpected token (START_OBJECT), expected VALUE_STRING: Expected array or string.; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected VALUE_STRING: Expected array or string.n at [Source: java.io.PushbackInputStream@2930ef8b; line: 8, column: 16] (through reference chain:
  

Я добавил приведенные ниже записи в свое приложение.

 spring:
 jackson:
    serialization:
      write-dates-as-timestamps: false
  

И следующая запись в build.gradle.

 compile 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
  

Кто-нибудь может мне помочь в том, что здесь не так?

POJO выглядит следующим образом.

 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    private LocalDateTime testDateTime;
  

JSON выглядит следующим образом.

 { "date_field": "2019-03-27T05:00:00.000Z", }
  

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

1. Ну, и как выглядит JSON?

2. { «date_field»: «2019-03-27T05:00:00.000Z», } @Michael

3. Вы уверены, что оба ваших микросервиса имеют одинаковую конфигурацию (одинаковую зависимость, одинаковое свойство, одинаковое @JsonFormat , …)? Вы также, кажется, используете date_field в своем JSON, но testDateTime в вашем POJO, это правильно? Также проверьте, не создаете ли вы где-нибудь пользовательский ObjectMapper компонент.

4. LocalDateTime у него никогда не будет часового пояса, проанализируйте его на util.Date

Ответ №1:

Похоже, что ваша конфигурация неверна. Имя в строке JSON — «date_field», в то время как ваш POJO имеет свойство «testDateTime». Вы должны сделать их конвертируемыми с помощью Jackson. Либо добавьте аннотацию, указывающую, что имя поля «date_field» (используя @JsonProperty), либо измените имя переменной.