当前位置:   article > 正文

“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

"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`)\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 3, column: 22] (through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO[\"enclosureList\"])",

今天周末加班改bug时,用postman传参遇到上述一个错误,搞了我十分钟。。。今天分享给大家避免踩坑

首先我的controller类如下

  1. // 上传附件
  2. @PostMapping("/upload")
  3. public R upload(@RequestBody EnclosureUploadDTO uploadDTO){
  4. internalProjectService.uploadEnclosure(uploadDTO);
  5. return R.ok();
  6. }

EnclosureUploadDTO里面有这几个参数

  1. @Data
  2. public class EnclosureUploadDTO {
  3. private String id;
  4. /**
  5. * 完成情况说明
  6. */
  7. private String completionDescription;
  8. private List<Enclosure> enclosureList;
  9. }

可以看到enclosureList是一个集合形式的数据

给大家看下我用postman传参方式

错误传参方式:

  1. {
  2. "id": "1590593194199277570",
  3. "enclosureList": {
  4. "enclosureName": "soft.pdf",
  5. "enclosureType": 21,
  6. "enclosureId": "1591262808073314362",
  7. "url": "www.baidu.com"
  8. }
  9. }

乍一看没啥问题啊,一执行的时候就报告错误
 

  1. {
  2. "code": 500,
  3. "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`)\n at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 3, column: 22] (through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO[\"enclosureList\"])",
  4. "data": null
  5. }

通过错误提示最后一句话   

(through reference chain: cn.com.sinosoft.entity.dto.EnclosureUploadDTO[\"enclosureList\"])"

 大概能看出是我这个集合数据传参方式不对

正确的方式应该为:

  1. {
  2. "id": "1590593194199277570",
  3. "enclosureList": [{
  4. "name": "soft.pdf",
  5. "enclosureName": "soft.pdf",
  6. "enclosureType": 21,
  7. "enclosureId": "1591262808073314362",
  8. "url": "www.baidu.com"
  9. }]
  10. }

因为enclosureList是一个集合,要在后面加上中括号

好了,这就是我解决以上错误的方法。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/520512
推荐阅读
相关标签