0


Postman 接口传参报错解决与@RequestBody的注解作用记录

文章目录

前言

记录接口传参报错与解决和@RequestBody的作用记录

一、接口代码

1.1 代码说明

以下面测试代码作为例子:前端发送 POST 请求,请求体里面携带 List 集合的字符串发送给后端接口,后端接口接收到前端发送的请求数据后直接返回给前端。

@PostMapping("/test")publicRtest(@RequestBodyList<String> list){returnR.ok().put("data", list);}

1.2 测试结果

在这里插入图片描述

报错信息:

"JSON parse error:Cannot deserialize instance of java.util.ArrayList<java.lang.Object> 
out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.
MismatchedInputException:Cannot deserialize instance of 
`java.util.ArrayList<java.lang.Object>` out of START_OBJECT token\n at 
[Source:(PushbackInputStream); line:1, column:1]",

1.3 问题解决

{"list":["哈哈哈!","呵呵呵!"]}

上面这种写法是 @RequestBody 注解封装 List 对象进行传递的,例如下面代码

@PostMapping("/test")publicRtest(@RequestBodyStringVo strVo){returnR.ok().put("strVo", strVo);}
@DatapublicclassStringVo{publicList<String> hobby;publicString name;publicInteger age;}

重启项目,发送请求
在这里插入图片描述
请求体中的属性必须与StringVo类中的属性对应,若属性对应不一致则对应数据为 null,如下图:
在这里插入图片描述

@PostMapping("/test")publicRtest(@RequestBodyList<String> list){returnR.ok().put("data", list);}

当接口参数 @RequestBody List< String > list 时,传递的请求体如下即可:

["哈哈哈!","呵呵呵!"]

1.4 @RequestBody 作用

@RequestBody 注解用来接收前端传递给后端的 JSON 字符串中的请求体中的数据,我们常用 POST 请求发送,所以使用 @RequestBody 接收数据时,一般都用 POST 方式进行提交,在后端的接收方法里使用@RequestBody 来修饰请求参数。

@RequestBody 注解对应的类在将 HTTP 的输入流(含请求体)装配到目标类时,会根据 JSON 字符串中的 key 来匹配对应实体类的属性,如果匹配一致且 JSON 中的该 key 对应的值符合(或可转换为)实体类的对应属性的类型要求时,会调用实体类的 setter 方法将值赋给该属。

标签: postman java json

本文转载自: https://blog.csdn.net/m0_49692893/article/details/129442660
版权归原作者 Redis_6389 所有, 如有侵权,请联系我们删除。

“Postman 接口传参报错解决与@RequestBody的注解作用记录”的评论:

还没有评论