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);
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM