Json 解析错误 - MismatchedInputException 期望 Spring 引导中的 LocalDate 数组或字符串

Json Parse Error - MismatchedInputException expecting array or string for LocalDate in Spring Boot

我有 2 个通过 REST 调用进行通信的微服务。 我有一个名为 Consumer 的实体,它具有各种字段,包括 LocalDate。 当我通过 REST 调用传递该实体时,出现以下异常

Json parse error expected array or string.,nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException

在实体class中,我注释如下

@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate dateOfBirth

在 application.properties 中,我添加了以下行,

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false

我正在使用 Spring 引导版本 2.1.2.RELEASE。 在 pom.xml 中,我有 jackson 依赖项。

I have added jackson-databind and jackson-datatype-jsr310,
both versions 2.9.9

我在第一个微服务中使用 Retrofit 作为客户端,通过它我对第二个微服务的 REST ENDPOINT(@RestController) 进行 REST 调用。

但我收到错误 - Json 解析错误 - LocalDate 的 MismatchedInputException。 我还需要补充什么吗?

EDIT-1 以下是生成的 JSON、

的片段
{"consumerId":1,"consumerName":"Harry","dateOfBirth":{"year":1991,"month":3,"day":10},"requestDate":"year":2020,"month":8,"day":31}

EDIT-2 我按照这个 link 实施了, http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/

根据@rohit 在评论中的建议,在下面另外添加。

@JsonFormat(pattern="yyyy-MM-dd")
@JsonSerialize(using=LocalDateSerializer.class)
@JsonDeserialize(using=LocalDateDeserializer.class)
private LocalDate dateOfBirth

但是 JSON 中生成的日期格式仍然没有按照格式更改。

"dateOfBirth":{"year":1991,"month":3,"day":10}

应该是,

"dateOfBirth":"1991-03-10"

不是吗??

SpringBoot main class中定义的bean是否没有被使用?,

@Bean
@Primary
public ObjectMapper serializingObjectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    JavaTimeModule javaTimeModule = new JavaTimeModule();
    javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer());
    javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());
    objectMapper.registerModule(javaTimeModule);
    return objectMapper;
}

现在我遇到了以下错误,

Json parse error: text; nested exception is com.fasterxml.jackson.databind.JsonMappingException: text (through reference chain com.model.Consumer["dateOfBirth"])

因为我在使用 Retrofit,

向我的 GsonBuilder 添加了一个 registerTypeAdapter,如下所示,

gsonBuilder.registerTypeAdapter(LocalDate.class, new LocalDateSerializer());
gsonBuilder.registerTypeAdapter(LocalDate.class, new LocalDateDeserializer());