当前位置:   article > 正文

JSON parse error: Cannot deserialize value of type `java.util.Date` from String “2022-01“:_使用el-date-picker生成时间格式交给后端接受报错json parse error: ca

使用el-date-picker生成时间格式交给后端接受报错json parse error: cannot deser

项目场景:

前端画面上有一个可以选择年月的日期选择器,代码如下:

  1. <el-form-item label="统计月份" prop="billsDate" v-if="isShowMonth">
  2. <el-date-picker clearable size="small"
  3. v-model="queryParams.billsDate"
  4. type="month"
  5. value-format="yyyy-MM"
  6. placeholder="请选择统计月份"
  7. :disabled="inputDisable">
  8. </el-date-picker>
  9. </el-form-item>

 选择的数据使用post请求将数据传递给后端


问题描述

后端接收的时候报如下错误

JSON parse error: Cannot deserialize value of type `java.util.Date` from String "2022-01": 

后端接收的实体类如下

  1. /**
  2. * 客户ID
  3. */
  4. private Long companyId;
  5. /**
  6. * 客户code
  7. */
  8. private String companyCode;
  9. /**
  10. * 账单统计类型
  11. */
  12. private Integer billStatisticsType;
  13. /**
  14. * 账单时间
  15. */
  16. private Date billsDate;

原因分析:

因为传入的参数是 String 类型的,而用来接收参数的项目的属性是 java.util.Date 类型的,类型无法转换。

springboot默认采用jackson,而jackson只能识别以下几种日期格式

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"; "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; "yyyy-MM-dd"; "EEE, dd MMM yyyy HH:mm:ss zzz"; long类型的时间戳(毫秒时间戳)


解决方案:

所以在接收到数据的时候,需要通过jackson把数据转化。jackson转化默认的时间格式 'yyyy-MM-dd’T’HH:mm:ss.SSS’,所以就会出现异常,所以要设置时区的格式为"yyyy-MM"。

添加@JsonFormat注解,来说明接收格式

代码如下

  1. /**
  2. * 客户ID
  3. */
  4. private Long companyId;
  5. /**
  6. * 客户code
  7. */
  8. private String companyCode;
  9. /**
  10. * 账单统计类型
  11. */
  12. private Integer billStatisticsType;
  13. /**
  14. * 账单时间
  15. */
  16. @JsonFormat(pattern = "yyyy-MM")
  17. private Date billsDate;

参照博客:Cannot deserialize value of type `java.util.Date` from String_LLLLevi的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/813855
推荐阅读
相关标签
  

闽ICP备14008679号