zoukankan      html  css  js  c++  java
  • Can not deserialize instance of java.lang.Integer out of START_OBJECT token 错误解决

    今天在跟前端联调一个新的接囗时遇到这个错误  ,错误代码 

    1.  
      /**
    2.  
      * 扫描车牌号码得到车辆信息
    3.  
      * @param plateId
    4.  
      * @return
    5.  
      */
    6.  
      @RequestMapping(value = "scanPlateNumber")
    7.  
      @ResponseBody
    8.  
      public ResponseResult scanPlateNumber(@RequestBody Integer plateId) {
    9.  
      VehicleEntity vehicleEntity;
    10.  
      try{
    11.  
      logger.info("批次发货--添加车牌id:"+plateId);

    因为@RequestBody是将post请求中content值转为一个整体对象。@RequestBody的解析有两个条件: 
    1.POST请求中content的值必须为json格式(存储形式可以是字符串,也可以是byte数组); 
    2.@RequestBody注解的参数类型必须是完全可以接收参数值的类型,比如:Map,JSONObject,或者对应的JavaBean; 
    所以Integer类型不能作为@RequestBody注解的参数类型,将上述代码修改如下(前端改成get请求)即可: 
     

    1.  
       /**
    2.  
           * 扫描车牌号码得到车辆信息
    3.  
           * @param plateId
    4.  
           * @return
    5.  
           */
    6.  
          @RequestMapping(value = "scanPlateNumber")
    7.  
          @ResponseBody
    8.  
          public ResponseResult scanPlateNumber(@RequestParam Integer plateId) {
    9.  
              VehicleEntity vehicleEntity;
    10.  
              try{
    11.  
                  logger.info("批次发货--添加车牌id:"+plateId);
    12.  
                  vehicleEntity = vehicleDAO.findVehicleById(plateId);

     
     下面总结下我所在做项目常用接囗格式: 

         1.post请求,参数通常为一个javaBean

    1.  
          /**
    2.  
           * 包裹发货(中心仓)
    3.  
           * @param orderPackageDeliveryParam
    4.  
           * @return
    5.  
           */
    6.  
          @RequestMapping("deliveryOrderPackage")
    7.  
          @ResponseBody
    8.  
          public ResponseResult deliveryOrderPackage(@RequestBody OrderPackageDeliveryParam orderPackageDeliveryParam) {
    9.  
              try {
    10.  
                  List<OrderPackageDeliveryVo> orderPackageAllEntityList = orderPackageDeliveryParam.getOrderPackageDeliveryVo();

        2.get请求 

    a.参数放在url里(旧的接囗常用)

    1.  
      /**
    2.  
           * 扫描仓位码得到仓位信息
    3.  
           * @param cityId
    4.  
           * @return
    5.  
           */
    6.  
          @RequestMapping(value = "scanWarehousePositionCode/{cityId}")
    7.  
          @ResponseBody
    8.  
          public ResponseResult scanWarehousePositionCode(@PathVariable("cityId") Long cityId) {
    9.  
              TimeAddressEntity timeAddressEntity;
    10.  
              try {
    11.  
                  timeAddressEntity = timeAddressService.findTimeAddressWarehouseById(cityId);

                    b.参数放在url后

      1.  
         /**
      2.  
             * 扫描车牌号码得到车辆信息
      3.  
             * @param plateId
      4.  
             * @return
      5.  
             */
      6.  
            @RequestMapping(value = "scanPlateNumber")
      7.  
            @ResponseBody
      8.  
            public ResponseResult scanPlateNumber(@RequestParam Integer plateId) {
      9.  
                VehicleEntity vehicleEntity;
      10.  
                try{
      11.  
                    logger.info("批次发货--添加车牌id:"+plateId);
      12.  
                    vehicleEntity = vehicleDAO.findVehicleById(plateId);
         
  • 相关阅读:
    Django之Admin
    反射功能:***attr
    python单例模式
    三元表达式,推导式,生成器表达式
    jquery的each()
    Django篇之F,Q
    Django的思维导图
    Models_Class 有choice,如何显示其中文
    Java并发机制(1)--线程状态与方法(转)
    Java并发机制(2)--synchronized与Lock
  • 原文地址:https://www.cnblogs.com/dzcWeb/p/13937331.html
Copyright © 2011-2022 走看看