企业网站定制开发“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时,企业网站定制开发用传参遇到上述一个错误,搞了我十分钟。。。今天分享给大家避免踩坑

首先我的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`) 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是一个集合,要在后面加上中括号

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

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发