文章目录
- json映射不到实体上
- 问题分析
- 解决方案
- json映射到String查不到数据
- 问题分析
- 解决方案
- 自动映射入参可以多吗,可以少吗
json映射不到实体上
开发中postman发的json映射不到实体上。
问题分析
原来是json等请求,需要加@RequestBody注解。
如果content-type
是 application/x-www-form-urlcoded
(也就是表单形式,或者是地址传参),那么参数会自动注入,什么都不用加。
如果不是的话,如 application/json
或者是 application/xml
等,需要加@RequestBody注解。
解决方案
参数前加上@RequestBody注解即可,代码:
@ResponseBody
@RequestMapping("/add")
public Set<String> add(@RequestBody KVEntity kvEntity){
}
看样子还要继续努力啊。
json映射到String查不到数据
用惯json了,有的时候只需传一个string,也用json,发现查询结果不对。
例如报文如下:
{
"username":"zhangsan"
}
问题分析
后台用String username接收的话,会整个接收。
如下:
// 想要的是这样
username="zhangsan"
// 实际会这样
username="\{\"username\":\"zhangsan\"\}";
解决方案
1、不用json格式,用地址传参,或formdata的格式传递。
2、使用包含username的User对象接收参数。
自动映射入参可以多吗,可以少吗
入参多,对应实体不存在的情况。
这种是可以的。
入参少,这种情况很常见,报文中只填所属的参数。
这种也是可以的。除非有限制入参的某个字段为必填项,那么才会报错。