在和前端进行前后交互时出现的问题?
后端接口
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