今天将前端请求由键值对改为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神坑相关推荐

  1. @responseBody和@RequestBody

    @responseBody和@RequestBody @responseBody把后台pojo转换json对象,返回到页面. @RequestBody接受前台json数据,把json数据自动封装jav ...

  2. postbody传参_post传参params与body的区别(@RequestParam和@RequestBody的区别)

    1.axios post请求  Content-Type默认为 application/x-www-form-urlencoded,我们传递参数的时,params里面的参数(简单的对象,通过 &quo ...

  3. SpringMVC @RequestBody接收Json对象字符串

    以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一 ...

  4. Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody

    1. 引言 在这篇短文中,我们简要地介绍了Spring MVC中常用的注解 @RequestBody和@ResponseBody. 2. @RequestBody 简单地说,在@RequestBody ...

  5. @RequestBody映射

    今天接收application/json数据,使用@RequestBody映射,取不到json字串里的单个数据,映射String变量结果是整个json字符串,因为只有一个键值对不想建对象,于是想到似乎 ...

  6. @ResponseBody 和 @RequestBody 的作用

    先提一嘴 @RequestMapping("url"),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址. 代码: @Reques ...

  7. SpringMVC过程中@RequestBody接收Json的问题 总是报415

    在SpringMVC中用@RequestBody接收Json的问题,总是报415,经过一翻查找 前台js的post: var postdata = '{"title":" ...

  8. SpringMVC @RequestBody 接收Json数组对象

    @RequestMapping(value="/signIn",method=RequestMethod.POST)public int saveUser(@RequestBody ...

  9. @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解?前端传输数据解析的问题?

    @RequestBody注解失效?从前端传来的数据到底需不需要@RequestBody注解? 又是在日常的从Mybatis升级Mybatis-Plus的过程中,我又发现了问题:怎么从前端传来的数据没有 ...

最新文章

  1. linux与python客户端,《使用python进行unix和linux管理》§5网络 §5.1 网络客户端
  2. html解析的简单方式,HTML解析看我就够了,不依赖任何第三方,两个方法搞定
  3. 如何判断Intent有没有对应的Activity去处理?
  4. Python源码剖析(四)字符串对象
  5. android word文档预览(支持doc/docx两种格式)
  6. 省级面板数据(2003-2019)二十:道路长度、面积、用水、污水、废气、保护区等(stata或excel版本)
  7. 2021年中国计算机视觉产业及其重点企业分析(商汤科技VS旷视科技VS依图科技VS云从科技)[图]
  8. 【个人经验】关于BFM
  9. VirtualBox虚拟机安装和环境搭建
  10. Kubernetes容器云平台技术方案
  11. NLP --- 词性标注
  12. mysql sandbox_用mysql_sandbox建立快速测试环境
  13. Modeling Task Relationships in Multi-task Learning withMulti-gate Mixture-of-Experts
  14. 版本 000 / 2020 作业计划/数量计划中没有 作业类型 XXX的控制记录
  15. Android 四大组件之广播(Broadcast)
  16. 华为到底算不算是一份好工作?看完你们还会羡慕华为的高薪吗?
  17. pythonsplit怎么使用_如何在Python中使用Split命令?
  18. python指数、幂数拟合curve_fit
  19. 数学建模——一元线性回归
  20. 如何解决:使用zotero引用文献时进入word时出现报错-error: citation/ bibliography is wrongly placed in index area

热门文章

  1. 从知识女性转变为家庭妇女
  2. 联想IdeaPad 310S重装系统过程
  3. win10电脑怎么设置最佳性能?
  4. 20181103 Nginx(布尔教育)
  5. 理论计算机科学杂志,理论计算机科学中的若干下界结果
  6. 搭建gloo网关(基于envoy)的wasm实验环境(阿里云、本机)
  7. 计算机科学与技术专业考数媒,数字媒体技术专业考研院校排名
  8. 代码和设计是如何一步步腐化的
  9. HIve数仓新零售项目DWD层的构建
  10. 【自控原理要点】第1章 绪论