SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter

SpringBoot解析Json格式数据

@ResponseBody

注:该注解表示前端请求后端controller,后端响应请求返回 json 格式数据前端,实质就是将java对象序列化

1.创建Controller

注:springboot默认就已经支持返回json格式数据,只需要加上@ResponseBody注解即可

    /*** 通过 @responsebody 注解返回 json 格式数据* @return*/@RequestMapping("/getAll")@ResponseBodypublic List<User> getUsers(){ArrayList<User> users = new ArrayList<>();for(int i=0; i < 10 ; i++){User user = new User();user.setId(String.valueOf(i));user.setUsername("shanggushenlong>>>"+i);user.setAge(i);user.setBirthday(new Date());users.add(user);}return users;}
2.创建bean
public class User {private String id;private String username;private Integer age;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date birthday;public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", username='" + username + '\'' +", age=" + age +", birthday=" + birthday +'}';}
3.结果
在这里插入图片描述

@RequestBody

注:该注解表示前端发起请求时,要求请求体为 json 格式数据,实质就是反序列化到对应的对象中

1.创建controller
   /*** 前端传入json数据,后端以String字符串接收* @param userStr* @return*/@RequestMapping("/setUser")@ResponseBodypublic String getUser(@RequestBody String userStr){System.out.println(userStr);return userStr.toString();}/*** 前端传入json,后端用 user 对象接收,@RequestBody 能够自动将前端传入的json与bean* 自动序列化对应成功一个实例对象* @param user* @return*/@RequestMapping("/setUser2")@ResponseBodypublic String getUser2(@RequestBody User user){System.out.println(user);return user.toString();}
2.结果
  • 使用postman发起请求,需要在body中添加相应的请求体
  • 可能出现的问题:时间格式转换报错 ------ 解决方法,在 bean 实体类中对应的 birthday 字段添加注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    在这里插入图片描述

    在这里插入图片描述

HttpMessageConverter

springboot对于json默认支持的比较好,但是有时候需要自定义配置,比如上面的时间格式配置,假如你的项目有很多个bean,这个时候每一个bean去添加注解比较麻烦,这个时候就可以使用springboot提供的配置类,自己手动定义配置。

@Configuration
public class WebMvcConfig {@BeanMappingJackson2HttpMessageConverter MyHttpMessageConverter(){// 1.创建一个 ConvertMappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();// 2. 创建objectmapperObjectMapper objectMapper = new ObjectMapper();// 配置时间格式objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));converter.setObjectMapper(objectMapper);return converter;}
}
  • 使用创建一个config类,使用 MappingJackson2HttpMessageConverter类,手动添加json相关的配置

  • 可能出现的问题:创建配置类,必须在类上添加注解 @Configuration,且在方法上加上 @Bean,只有这样配置才会生效。
    结果如下:

    在这里插入图片描述

    注:此处可能产生的问题是:配置类写了,没有达到预期的效果,可能是 bean 类中该字段注解没有去掉

  • json 格式数据在前后分离的时代,是非常重要的一种数据格式,因此HttpMessageConverter 也变的很重要,我们可以在此相关类中配置相应的规则

  • springboot提供的相关配置类 JacksonHttpMessageConvertersConfiguration MappingJackson2HttpMessageConverter

希望自己能一直保持初衷,文章一直写下去,和大家一起成长

本系列代码github地址:https://github.com/shanggushenlong/springboot-demo



喜欢的朋友记得点赞、收藏、关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144294.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

多智能体强化学习示例

程序功能 这段代码实现了一个多智能体强化学习环境&#xff0c;其中两个智能体在5x5的网格上移动&#xff1a; 智能体目标&#xff1a; Agent 1 从 (0, 0) 出发&#xff0c;目标是 (4, 4)。 Agent 2 从 (4, 4) 出发&#xff0c;目标是 (0, 0)。 动作空间&#xff1a;每个智能体…

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究求解全过程文档及程序

2023年全国研究生数学建模竞赛华为杯 C题 大规模创新类竞赛评审方案研究 原题再现&#xff1a; 现在创新类竞赛很多&#xff0c;其中规模较大的竞赛&#xff0c;一般采用两阶段&#xff08;网评、现场评审&#xff09;或三阶段&#xff08;网评、现场评审和答辩&#xff09;评…

数据库加密算法

功能简介 对数据库字段进行加密,如下图: 一、yml配置 注意: MD5_32 MD5_16 BASE64 AES SM2 SM3 SM4 需要 password(14位 ,26位, 32 位) 就行 非对称算法如:SM2,RSA, 需要配置 密码:password 公钥:publicKey 私钥:privateKey yml: # 数据加密 mybatis-encry…

【Linux】从内核认识信号

一、阻塞信号 1 .信号的一些其他相关概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注…

商标转让成功,转让前和转让后的注意!

近日帮给某公司办理的商标转让证明成功下证&#xff0c;在购买闲置商标或者不同的主体之间商标需要更换的&#xff0c;就要做商标转让申请&#xff0c;大约是2个半月到3个月左右就可以下证。 商标转让时近似商标要一并转让&#xff0c;要不就没办法转让成功&#xff0c;比如在3…

第六天旅游线路预览——从乌鲁木齐到天山天池景区入口

第六天&#xff1a;从乌鲁木齐到天山天池&#xff0c;晚上回乌鲁木齐住宿。 第六天从乌鲁木齐到天山天池景区入口的规划结果见下图&#xff1a; 从乌鲁木齐市区到天山天池风景区停车场&#xff0c;路程69公里&#xff0c;车程约1小时&#xff0c;10&#xff1a;30左右到达天山…

使用Addressables+SpriteAtlas打包产生冗余

1&#xff09;使用AddressablesSpriteAtlas打包产生冗余 2&#xff09;使用SBP打AssetBundle脚本引用丢失 3&#xff09;Unity构建后处理&#xff08;IPostprocessBuildWithReport等接口&#xff09;抛出异常后&#xff0c;构建不会停止 4&#xff09;Unity 2022.3.0版本使用Oc…

【w0网页制作】Html+Css网页制作影视主题之庆余年Ⅱ含轮播表单(5页面附源码)

庆余年2HTMLCSS网页开发目录 &#x1f354;涉及知识&#x1f964;写在前面&#x1f367;一、网页主题&#x1f333;二、网页效果效果1、轮播效果图Page1、首页Page2、角色介绍Page3、剧情介绍Page4、剧集评价Page5、留言模块 &#x1f40b;三、网页架构与技术3.1 脑海构思3.2 整…

PyQt5 导入ui文件报错 AttributeError: type object ‘Qt‘ has no attribute

问题描述&#xff1a; 利用 PyQt5 编写可视化界面是较为普遍的做法&#xff0c;但是使用全新UI版本的 Pycharm 修改之前正常的UI文件时&#xff0c;在没有动其他代码的情况下发现出现以下报错 AttributeError: type object Qt has no attribute Qt::ContextMenuPolicy::Defaul…

实力再证|海云安连续三年荣登中国网络安全产业联盟(CCIA)榜单,蝉联两届“中国网安产业成长之星”

9月6日&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;正式公布了2024年中国网安产业竞争力50强、成长之星、潜力之星榜单&#xff0c;据悉&#xff0c;本次榜单调研共历时数月&#xff0c;从多个维度对调研企业进行了全面评估分析&#xff0c;遴选出2024年中国…

en造数据结构与算法C# 用Unity实现简单的群组行为算法 之 分散

因为还没写聚集并且材质没有设置摩擦系数&#xff0c;所以出现了这种刚体受力得到初速度却无法减少&#xff0c;从而乱飞的情况 本教程部分代码师承于siki学院siki老师的人工智能编程这一案例&#xff0c;我认为自己的水平有限&#xff0c;老师的写法太过高级&#xff0c;所以就…

供应十字线激光模组厂家如何选择

在工业自动化、机器视觉及精密测量领域&#xff0c;十字线激光模组作为关键部件&#xff0c;其性能与质量直接关乎到整个系统的稳定性和精确度。因此&#xff0c;选择合适的十字线激光模组厂家显得尤为重要。以下几点&#xff0c;是给大家在纷繁的市场中&#xff0c;提供一份清…

Vue3 项目引入阿里 iconfont 图标和字体的多种方式

&#x1f680; 个人简介&#xff1a;某大型国企资深软件研发工程师&#xff0c;信息系统项目管理师、CSDN优质创作者、阿里云专家博主&#xff0c;华为云云享专家&#xff0c;分享前端后端相关技术与工作常见问题~ &#x1f49f; 作 者&#xff1a;码喽的自我修养&#x1f9…

【PSINS】基于PSINS工具箱的EKF+UKF对比程序|三维定位|组合导航|MATLAB

文章目录 程序描述运行结果下载链接 程序描述 需要PSINS工具箱才能正常运行。集成了EKF和UKF&#xff0c;包含了滤波结果的对比。带中文注释。 运行结果 程序模块&#xff1a; 运动轨迹&#xff1a; 各轴位置误差的曲线&#xff1a; 下载链接 https://gf.bilibili.com/i…

JavaWeb笔记整理——Redis

目录 Redis数据类型 各种数据类型的特点 Redis常用命令 字符串操作命令 哈希操作命令 列表操作命令 集合操作命令 有序集合操作命令 通用命令 在Java中操作Redis Spring Data Redis的使用方式 操作字符串类型的数据 ​编辑操作hash类型的数据 ​编辑 操作列表类…

AI产品经理面试的问题和回复建议

如果你正在考虑找AI产品经理的岗位工作&#xff0c;建议好好准备以下的面试问题&#xff1a; 关于面试时间&#xff1a;一般AI产品经理的面试时间在40分钟-70分钟左右&#xff0c;主要看面试官是否对你感兴趣&#xff08;你的产品经验、气场是否相符&#xff09;。时间越长一般…

秋招面试注意了!网络安全工程师面试最怕遇到的问题,很多人都经历过!

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理

文中所用到的软件可在此下载。 https://download.csdn.net/download/xingchengaiwei/89733788 1、当我在一台服务器中部署多个网站时遇到了这样的情况&#xff0c;一台Windows Server 2016 服务器上要部署多个APS.NET网站&#xff0c;还需要部署一套Tomcat。Tomcat网站使用的是…

FutureTask源码分析

Thread类的run方法返回值类型是void&#xff0c;因此我们无法直接通过Thread类获取线程执行结果。如果要获取线程执行结果就需要使用FutureTask。用法如下&#xff1a; class CallableImpl implements Callable{Overridepublic Object call() throws Exception {//do somethin…

实时加密机的工作原理

实时加密机&#xff0c;作为数据加密领域的一种高级硬件设备&#xff0c;主要承担着对敏感数据进行实时加密和解密的任务&#xff0c;以确保数据在传输和存储过程中的安全性和完整性。以下是对实时加密机的详细阐述&#xff1a; 一、定义与功能 实时加密机是一种采用先进加密算…