• fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string: "13:02:19"


    问题:time类型数据插入不进mysql数据库;调试的时候报如下错误:

    Caused by: java.lang.NumberFormatException: For input string: "13:02:19"

    Resolving exception from handler [public slc.utils.ResultJson slc.controller.SamplingpointinfoController.saveSamplingpointinfo(java.lang.String) throws java.lang.Exception]: com.alibaba.fastjson.JSONException: For input string: "13:02:19"

    断点调试, System.out.println(t);传入的参数能打印出来,

    {
        "samplingpointId":"1",
        "samplingDate":"2016-04-13",
        "samplingTime":"13:02:19",
        "samplingpointType":"0",
        "samplingpointVariety":"测试1",
        "samplingpeopleId":"1",
        "samplingArea":"测试1"
    }

    进了  SamplingpointinfoTable samplingpointinfoTable=JSON.parseObject(t, SamplingpointinfoTable.class);这句代码抛异常;

    代码部分:

     public @ResponseBody ResultJson  saveSamplingpointinfo(@RequestParam(value="json",required=true) String t) throws Exception{
      System.out.println(t);
        SamplingpointinfoTable samplingpointinfoTable=JSON.parseObject(t, SamplingpointinfoTable.class);
        int DBResponse=samplingpointinfoServiceI.insertSelective(samplingpointinfoTable);

    于是基本断定是传入的参数没有转换成json对象成功。网上说要fastjson对日期型处理时要在pojo中相应属性下面加注解

        @JSONField(format="HH:mm:ss") 
        private Date samplingTime;

    改完后继续调试,可是为什么fastjson转换还是不成功呢,

    mysql中date(2015-05-31)和time(20:21:56)在java中对应的都是date类型,使用mybatis逆向工程生成的也都是date类型,这些也都没问题啊

    是不是这个版本有bug啊,我使用的

    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.1.26</version>
      </dependency>

    换成最新版吧,

     <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.12</version>
      </dependency>

    还真是版本问题,换成这个版本以后就好了;然后为了试试到底用不用加注解,我又把下面pojo里面的属性上的注解去掉了

        @JSONField(format="HH:mm:ss") 
        private Date samplingTime;

    去掉就报错!所以总结:1,fastjson 1.1.26版本存在date类型转换的bug,换成新版本就好;

    2,pojo里面的date属性上要加注解,比如:@JSONField(format="HH:mm:ss") 
                                                              private Date samplingTime;

  • 相关阅读:
    解决Redis Cluster模式下的排序问题
    zookeeper实现商品秒杀抢购
    zookeeper实现互斥锁
    用dubbo+zookeeper+spring搭建一个简单的http接口程序
    [置顶] 一个优秀的程序员怎样做好时间管理
    [置顶] BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
    [置顶] 学生管理系统验收出现的问题及解决方法
    [置顶] 学生管理系统的常见问题
    如何让你成为一个专业的程序员(一)
    关于英语学习法
  • 原文地址:https://www.cnblogs.com/mengjinluohua/p/5544987.html
Copyright © 2020-2023  润新知