@RequestBody神坑
今天将前端请求由键值对改为json请求后,原来写的验证码模块怎么也验证不成功,很是郁梦啊,后来看日志才知道是通过@RequestBody绑过来的单个对象是json字符串,而不是我想要的直接的String值,难怪怎么就出错了呢,为了避免出错,以后还是通过改成map来绑定吧,不管是单个对象还是多个,map取值也很方便,是吧,特此记录下,值得一提的是,不管你用了多少个@RequestBody,它只会全部绑定在第一个参数中,切记
@PostMapping(value = "/test")
public void test(@RequestBody String username){System.out.println(username);String name = JSONObject.toJSONString(username);System.out.println(name);
}@PostMapping("/test2")
public void test2(@RequestBody User user){System.out.println(user.getNickname());System.out.println(user.getEmail());System.out.println(user.getPassword());
}
User 对象有三个属性nickname,email,password,构造函数User(String nickname, String email,String password)
先来看看绑过来的username是个什么:
控制台打印的username为:
并不是我们期望的daniel,而是一个Json字符串,那么我们怎么取出username的值呢,目前想到的方法
1、改用Map<String,String> map绑定username,然后通过map.get("username")取值
2、使用com,alibaba.fastjson包将json字符串转换为Json 对象,在通过get方法取出username值
@PostMapping(value = "/test")
public void test(@RequestBody String username){System.out.println(username);//json字符串JSONObject object = JSON.parseObject(username); //解析成json对象String name = object.getString("username"); //通过get方法取值,根据不同的key有不同的get方法,比如getString(),getInteger(),getBytes()等等System.out.println(name);
}
再来看看User绑过来没有?
如果少一个属性呢
如果添加一个对象中不存在的属性呢
注意其中的age属性不存在于User对象中
控制台不会报错,但是我们怎么取出这个没有的age属性呢?不知道,还是别这么做吧,额
想了解更多的看看这里和那里吧。。。
@RequestBody神坑相关推荐
- @responseBody和@RequestBody
@responseBody和@RequestBody @responseBody把后台pojo转换json对象,返回到页面. @RequestBody接受前台json数据,把json数据自动封装jav ...
- postbody传参_post传参params与body的区别(@RequestParam和@RequestBody的区别)
1.axios post请求 Content-Type默认为 application/x-www-form-urlencoded,我们传递参数的时,params里面的参数(简单的对象,通过 &quo ...
- SpringMVC @RequestBody接收Json对象字符串
以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一 ...
- Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody
1. 引言 在这篇短文中,我们简要地介绍了Spring MVC中常用的注解 @RequestBody和@ResponseBody. 2. @RequestBody 简单地说,在@RequestBody ...
- @RequestBody映射
今天接收application/json数据,使用@RequestBody映射,取不到json字串里的单个数据,映射String变量结果是整个json字符串,因为只有一个键值对不想建对象,于是想到似乎 ...
- @ResponseBody 和 @RequestBody 的作用
先提一嘴 @RequestMapping("url"),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址. 代码: @Reques ...
- SpringMVC过程中@RequestBody接收Json的问题 总是报415
在SpringMVC中用@RequestBody接收Json的问题,总是报415,经过一翻查找 前台js的post: var postdata = '{"title":" ...
- SpringMVC @RequestBody 接收Json数组对象
@RequestMapping(value="/signIn",method=RequestMethod.POST)public int saveUser(@RequestBody ...
- @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解?前端传输数据解析的问题?
@RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解? 又是在日常的从Mybatis升级Mybatis-Plus的过程中,我又发现了问题:怎么从前端传来的数据没有 ...
最新文章
- linux与python客户端,《使用python进行unix和linux管理》§5网络 §5.1 网络客户端
- html解析的简单方式,HTML解析看我就够了,不依赖任何第三方,两个方法搞定
- 如何判断Intent有没有对应的Activity去处理?
- Python源码剖析(四)字符串对象
- android word文档预览(支持doc/docx两种格式)
- 省级面板数据(2003-2019)二十:道路长度、面积、用水、污水、废气、保护区等(stata或excel版本)
- 2021年中国计算机视觉产业及其重点企业分析(商汤科技VS旷视科技VS依图科技VS云从科技)[图]
- 【个人经验】关于BFM
- VirtualBox虚拟机安装和环境搭建
- Kubernetes容器云平台技术方案
- NLP --- 词性标注
- mysql sandbox_用mysql_sandbox建立快速测试环境
- Modeling Task Relationships in Multi-task Learning withMulti-gate Mixture-of-Experts
- 版本 000 / 2020 作业计划/数量计划中没有 作业类型 XXX的控制记录
- Android 四大组件之广播(Broadcast)
- 华为到底算不算是一份好工作?看完你们还会羡慕华为的高薪吗?
- pythonsplit怎么使用_如何在Python中使用Split命令?
- python指数、幂数拟合curve_fit
- 数学建模——一元线性回归
- 如何解决:使用zotero引用文献时进入word时出现报错-error: citation/ bibliography is wrongly placed in index area