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

项目场景:

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

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

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


问题描述

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

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

后端接收的实体类如下

    /**
     * 客户ID
     */
    private Long companyId;

    /**
     * 客户code
     */
    private String companyCode;

    /**
     * 账单统计类型
     */
    private Integer billStatisticsType;

    /**
     * 账单时间
     */
    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注解,来说明接收格式

代码如下

    /**
     * 客户ID
     */
    private Long companyId;

    /**
     * 客户code
     */
    private String companyCode;

    /**
     * 账单统计类型
     */
    private Integer billStatisticsType;

    /**
     * 账单时间
     */
    @JsonFormat(pattern = "yyyy-MM")
    private Date billsDate;

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值