我需要获取要在数据库上删除的id,但我无法以这种方式获取id参数
@RequestMapping(value = {"/delete/search/","/delete/search"}, method = RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(@RequestBody Integer id_search) {
return id_search;
}
我收到此错误消息
"message": "JSON parse error: Can not deserialize instance of java.lang.Integer out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_OBJECT tokenn at [Source: java.io.PushbackInputStream@1b77938; line: 1, column
这种说法是错误的
@RequestBody Integer id_search
这意味着Spring期待一个Integer
类的机构。但是您作为主体传递的内容与整数类不匹配。
您有很多选择来解决此问题。
删除
@RequestBody
,只需声明为public Integer deleteUser(Integer id_search) {...}
有了这个,你需要调用这个端点作为
http://localhost:8080/seviceRS/delete/search?id_search=2
你可以像这样
PathVariable
传递它http://localhost:8080/seviceRS/delete/search/2
为此,请像这样更改控制器方法
@RequestMapping(value = {"/delete/search/{id_search}"}, method = RequestMethod.DELETE) @ResponseBody public Integer deleteUser(Integer id_search) {...}
如果要作为正文发送,则应创建一个与要发送的 json 匹配的类。
例如。创建一个类,例如
class Demo { private int id_search; //Getters & Setters }
使用这种方法,您的控制器方法如下所示
@RequestMapping(value = {"/delete/search/}, method = RequestMethod.DELETE) @ResponseBody public Integer deleteUser(Demo demo) { demo.getId_Search(); }
也许您正在尝试从 Postman 客户端发送正文中包含 JSON 文本的请求或类似的东西:
{
"id_search":2
}
这不能由杰克逊反序列化,因为这不是整数(似乎是,但不是(。来自java.lang Integer的Integer对象稍微复杂一些。
要使您的邮递员请求起作用,只需输入(不带大括号{ }
(:
2