在和前端进行前后交互时出现的问题?

后端接口

 public AjaxResult taskPath(@RequestBody HkBoatTaskOfPhone hkBoatTaskOfPhone){}

我的HkBoatTaskOfPhone类中有 List<HkBoatTaskPath> pathList; 这个属性 最终就是这个的问题但不知为啥

前端 传来的数据(这数据其实不用这么多,但传过来应该没影响把 结果就是不行) 这是他json处理后的 后端一直接受不到 弹出


{
    "isApp": "forAndroid", 
    "taskId": "87", 
    "taskName": "test", 
    "pathList": [
        {
            "createTime": "2022-07-13 16:34:32", 
            "cycleIndex": "1", 
            "id": "347", 
            "maxOrMin": [
                {
                    "latitude": 30, 
                    "longitude": 120
                }, 
                {
                    "latitude": 30, 
                    "longitude": 120
                }
            ], 
            "pathName": "test1", 
            "pathType": "1", 
            "pointList": [
                {
                    "latitude": 30, 
                    "longitude": 120
                }, 
                {
                    "latitude": 30, 
                    "longitude": 120
                }
            ]
        }, 
        {
            "createTime": "2022-07-13 16:34:44", 
            "cycleIndex": "1", 
            "id": "348", 
            "maxOrMin": [
                {
                    "latitude": 30, 
                    "longitude": 120
                }, 
                {
                    "latitude": 30, 
                    "longitude": 120
                }
            ], 
            "pathName": "test2", 
            "pathType": "2", 
            "pointList": [
                {
                    "latitude": 30, 
                    "longitude": 120
                }, 
                {
                    "latitude": 30, 
                    "longitude": 120
                }
            ]
        }
    ]
}


报下面的错误 一直映射错误 也不知这个json和我的那个类是哪里错了
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang. String` out of START_ARRAY token

HkBoatTaskOfPhone

 private String code;

    private String taskName;

    private Long taskId;

    String taskPahtList;

    List<HkBoatTaskPath> pathList;

HkBoatTaskPath类的结构 (这个类后期一个劲的改表 改字段 所以比较多的没用的字段又不能删 有人可以给点建议 怎么处理这种情况更好 哎哎哎 不然就成屎山了)

 @TableId(value = "id",type = IdType.AUTO)
    private Long id;

   
    private Long taskId;

   
    private String taskName;

   
    private Long pathId;

  
    private String pathName;

   
    private Integer pathIndex;

 
    private Integer pathLoop;

    private Integer leftTimes;


    private String code;

    
    private Integer executeState;

  
    private Integer progressPoint;
    /**
     * 高德地图点
     */
    private String gdCoordinate;

    /**
     * 最大最小值
     */
    private String maxOrMin;
    private List<Coordinate> maxOrMinList;

    /**
     * 返回点标识
     * @param id
     */
    private Integer identifier;
    /**
     * 返回点标识  因为前端统一名称  只在新增任务这个接口这样使用 代替了identifier
     */
    private Integer pathType;
    /**
     *  循环次数
     */
    private Integer cycleIndex;
    private Long pathIds;

最终解决方案:前端他改成了下面的形式

 {
    "isApp": "forAndroid",
    "taskName": "choushui",
    "cycleIndex":35,
    "pathList": "[{\"cycleIndex\":\"1\",\"id\":\"346\",\"pathType\":\"0\"},{\"cycleIndex\":\"1\",\"id\":\"320\",\"pathType\":\"3\"},{\"cycleIndex\":\"1\",\"id\":\"320\",\"pathType\":\"3\"},{\"cycleIndex\":\"1\",\"id\":\"320\",\"pathType\":\"3\"}]"
}

我的接口改成使用String 在json解析这个String 才成功

 public AjaxResult taskPath(@RequestBody String hkBoatTaskOfPhone){}

每次对接都是这样 怎么才能防止这种事情发生 每次都浪费好长时间

阅读 1.8k
3 个回答

接口这样接收参数是没有问题的,前端只要传正确的json字符串即可

public AjaxResult taskPath(@RequestBody HkBoatTaskOfPhone hkBoatTaskOfPhone)

怀疑是HkBoatTaskOfPhone或HkBoatTaskPath里的其他字段反序列化时出现错误

目测得看看你的HkBoatTaskOfPhone类结构

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏