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

后端接口

 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){}

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


回答:

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

public AjaxResult taskPath(@RequestBody HkBoatTaskOfPhone hkBoatTaskOfPhone)

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


回答:

后台没有 api 文档吗?
如果没有就叫后台给个示例,postman能调通的。

knife4j或Swagger
https://gitee.com/xiaoym/knife4j


回答:

目测得看看你的HkBoatTaskOfPhone类结构

以上是 在和前端进行前后交互时出现的问题? 的全部内容, 来源链接: utcz.com/p/944822.html

回到顶部