“JSON parse error: Cannot deserialize value of type `java.util.ArrayList<XXX>` from Object value ...
"JSON parse error: Cannot deserialize value of type `java.util.ArrayList<xxx>` from Object value (token `JsonToken.START_OBJECT`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<xxx>` from Object value (token `JsonToken.START_OBJECT`) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 3, column: 22] (through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO["enclosureList"])",
今天周末加班改bug时,用postman传参遇到上述一个错误,搞了我十分钟。。。今天分享给大家避免踩坑
首先我的controller类如下
// 上传附件
@PostMapping("/upload")
public R upload(@RequestBody EnclosureUploadDTO uploadDTO){
internalProjectService.uploadEnclosure(uploadDTO);
return R.ok();
}
EnclosureUploadDTO里面有这几个参数
@Data
public class EnclosureUploadDTO {
private String id;
/**
* 完成情况说明
*/
private String completionDescription;
private List<Enclosure> enclosureList;
}
可以看到enclosureList是一个集合形式的数据
给大家看下我用postman传参方式
错误传参方式:
{
"id": "1590593194199277570",
"enclosureList": {
"enclosureName": "soft.pdf",
"enclosureType": 21,
"enclosureId": "1591262808073314362",
"url": "www.baidu.com"
}
}
乍一看没啥问题啊,一执行的时候就报告错误
{
"code": 500,
"msg": "JSON parse error: Cannot deserialize value of type `java.util.ArrayList<cn.com.sinosoft.entity.Enclosure>` from Object value (token `JsonToken.START_OBJECT`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList<cn.com.sinosoft.entity.Enclosure>` from Object value (token `JsonToken.START_OBJECT`)
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 3, column: 22] (through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO["enclosureList"])",
"data": null
}
通过错误提示最后一句话
(through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO["enclosureList"])"
大概能看出是我这个集合数据传参方式不对
正确的方式应该为:
{
"id": "1590593194199277570",
"enclosureList": [{
"name": "soft.pdf",
"enclosureName": "soft.pdf",
"enclosureType": 21,
"enclosureId": "1591262808073314362",
"url": "www.baidu.com"
}]
}
因为enclosureList是一个集合,要在后面加上中括号
好了,这就是我解决以上错误的方法。。。
相关文章
- 拜托!别再问我多线程的这些问题了
- PHPExcel导出文件
- 如何突破我国电信领域对外开放的瓶颈?
- PHPExcel读取文件
- 持续进化 AI 能力,未来企业决胜混合多云
- PHPcqrCode类库
- 关于生成树协议里那些你不知道秘密??
- Spring怎么又 bug 了,响应结果居然乱码了?
- 上网如何保存记录?你要知道Session和Cookie的关系
- 混合工作模式如何改变云计算策略
- AWS年增百亿美元营收 看好中国云市场
- “IPv6+”,构建全场景的智能联接,支撑数字化未来
- 全球云计算产业规模不断增大 预计2022年将超2700亿美元
- CPU是如何解决冒险问题的?
- GC时对象地址变了,hashCode如何保持不变?
- 我国已分配IPv6地址用户数达14.42亿 IPv6活跃用户数3.62亿
- Kubernetes和Docker分道扬镳对你来说意味着什么
- K8s宣布弃用Docker,千万别慌!
- 最好的编程语言是怎样的?
- 美国宣布批准6G试验,是高瞻远瞩还是黔驴技穷