当前位置: 首页 > 知识库问答 >
问题:

Json分析错误-不匹配的PutException在Spring Boot中需要LocalDate的数组或字符串

南门祯
2023-03-14

我有两个通过REST呼叫进行通信的微服务。我有一个名为Consumer的实体,它有多个字段,包括LocalDate。当我通过REST调用传递这个实体时,我得到以下异常

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

在实体课上,我注释如下

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

正在申请中。属性,我在下面加了一行,

spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false

我使用的是Spring Boot 2.1.2版。释放在波姆。xml,我有jackson依赖项。

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

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

但是我得到了错误——Json解析错误——LocalDate的不匹配PutException。还有什么需要补充的吗?

下面是生成的JSON的片段,

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

编辑-2我根据这个链接实现,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主类中定义的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"])

共有1个答案

施轶
2023-03-14

当我使用改装时,

在我的GsonBuilder中添加了registerTypeAdapter,如下所示,

gsonBuilder.registerTypeAdapter(LocalDate.class, new LocalDateSerializer());
gsonBuilder.registerTypeAdapter(LocalDate.class, new LocalDateDeserializer());
 类似资料:
  • 我一直在此对象上收到JSON解析错误 “DC008”:“PD가격 $2.90/码에서 시작#10#10티앤티 난단에 나염작업#10#10나염비 \4000/YD(数字전사)#1010%损失#10#10판매가 수정 $7.30/码- 但我不知道哪个角色藏在这个物体里。 谁能帮帮我吗 字符串中的btw#10是从\n转换而来的

  • 问题内容: 我有这段代码: 它将引发不匹配的组错误。但是,如果不匹配,我想在那里添加空字符串,而不是抛出错误。我怎样才能做到这一点? 注意:我的完整代码比此示例复杂得多。但是,如果您找到更好的解决方案,如何遍历比赛并在其中添加数字,则可以共享。我的完整代码: 问题答案: 在Python 3.5之前的版本中,对Python中失败的捕获组的反向引用未使用空字符串填充。这是在bugs.python.or

  • 我正在尝试解析我的json数据 我解析数据的代码是 我得到了错误

  • 我有一个简单的springboot程序,它接受json并打印出来。主要目的是使用json验证程序包,但当前的上下文是基本的请求解析。问题是,当我试图将输入请求映射到一个类实体时,它给出了以下错误:“org.springframework.http.converter.httpMessageEndableException”,。 > 控制器(Hello.java): Java类实体: 公共类Demo

  • 问题内容: 我已经声明了公共静态数组的名称和ID: 但是说: 我不知道怎么了 是我声明变量的方式还是写的方法? 问题答案: 您在静态String数组和传递给该方法的本地String变量之间发生冲突。 最好的解决方案是使用不同的名称。这将使代码更容易理解。 如果仍然坚持使用相同的名称,则可以通过使用类名称访问静态数组来解决名称冲突: 这同样适用于您的int数组和int变量。

  • ---编辑问题以添加解决方案----- --问题--- 我有一个Json字符串数组,如下所示。 如何验证它是否包含今天的日期2021-10-11或单词PROCESSING-1作为其中的子字符串?顺便说一句,我正在用空手道DSL尝试它 ----解决方案——我可以通过以下reg-ex实现。 以下是帮助某人的代码: def myArray= “”“ [ “Cust1019005-2021-10-27T1