您当前的位置: 首页 > 技术文章 > 前端开发

“JSON parse error: Cannot deserialize value of type `java.util.ArrayList<XXX>` from Object value ...

作者: 时间:2022-11-26阅读数:人阅读

"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类如下

    // 上传附件
    @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传参方式

“JSON parse error: Cannot deserialize value of type `java.util.ArrayList<XXX>` from Object value ...(图1)

错误传参方式:

{
    "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`)\n 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是一个集合,要在后面加上中括号

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

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:licqi@yunshuaiweb.com

加载中~
如果您对我们的成果表示认同并且觉得对你有所帮助可以给我们捐赠。您的帮助是对我们最大的支持和动力!
捐赠我们
扫码支持 扫码支持
扫码捐赠,你说多少就多少
2
5
10
20
50
自定义
您当前余额:元
支付宝
微信
余额

打开支付宝扫一扫,即可进行扫码捐赠哦

打开微信扫一扫,即可进行扫码捐赠哦

打开QQ钱包扫一扫,即可进行扫码捐赠哦