SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter
上一篇:SpringBoot基础实战系列(一)整合视图
下一篇:SpringBoot基础实战系列(三)springboot单文件与多文件上传
SpringBoot解析Json格式数据
@ResponseBody
注:该注解表示前端请求后端controller,后端响应请求返回 json 格式数据前端,实质就是将java对象序列化
1.创建Controller
注:springboot默认就已经支持返回json格式数据,只需要加上@ResponseBody注解即可
/**
* 通过 @responsebody 注解返回 json 格式数据
* @return
*/
@RequestMapping("/getAll")
@ResponseBody
public 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;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
3.结果

@RequestBody
注:该注解表示前端发起请求时,要求请求体为 json 格式数据,实质就是反序列化到对应的对象中
1.创建controller
/**
* 前端传入json数据,后端以String字符串接收
* @param userStr
* @return
*/
@RequestMapping("/setUser")
@ResponseBody
public String getUser(@RequestBody String userStr){
System.out.println(userStr);
return userStr.toString();
}
/**
* 前端传入json,后端用 user 对象接收,@RequestBody 能够自动将前端传入的json与bean
* 自动序列化对应成功一个实例对象
* @param user
* @return
*/
@RequestMapping("/setUser2")
@ResponseBody
public 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 {
@Bean
MappingJackson2HttpMessageConverter MyHttpMessageConverter(){
// 1.创建一个 Convert
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
// 2. 创建objectmapper
ObjectMapper 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
SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter的更多相关文章
- SpringBoot基础实战系列(一)整合视图
SpringBoot整合freemarker 1.添加依赖:springboot基本上是无缝衔接,基本上只需要添加对应的依赖,不需要或者做很少量的配置即可 注:对于springboot项目的创建此处不 ...
- SpringBoot基础实战系列(三)springboot单文件与多文件上传
springboot单文件上传 对于springboot文件上传需要了解一个类MultipartFile ,该类用于文件上传.我此次使用thymeleaf模板引擎,该模板引擎文件后缀 .html. 1 ...
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口(转)
转自:[CXF REST标准实战系列] 二.Spring4.0 整合 CXF3.0,实现测试接口 文章Points: 1.介绍RESTful架构风格 2.Spring配置CXF 3.三层初设计,实现W ...
- WCF开发实战系列二:使用IIS发布WCF服务
WCF开发实战系列二:使用IIS发布WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们使用VS200 ...
- Java秒杀系统实战系列~构建SpringBoot多模块项目
摘要:本篇博文是“Java秒杀系统实战系列文章”的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项目,即“秒杀系统”! ...
- SQL Server 性能优化实战系列(二)
SQL Server datetime数据类型设计.优化误区 一.场景 在SQL Server 2005中,有一个表TestDatetime,其中Dates这个字段的数据类型是datetime,如果你 ...
- ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解
前言 在上一篇中介绍了ElasticSearch集群和kinaba的安装教程,本篇文章就来讲解下 ElasticSearch的DSL语句使用. ElasticSearch DSL 介绍 Elastic ...
- [系列] Go 如何解析 JSON 数据?
概述 最近掉进需求坑了,刚爬上来,评估排期出现了严重问题,下面三张图很符合当时的心境. 谈需求 估排期 开始干 为啥会这样,我简单总结了下: 与第三方对接. 跨团队对接. 首次用 Go 做项目. 业务 ...
- MP实战系列(二)之集成swagger
其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...
随机推荐
- JavaScript基础1225
JavaScript函数 1.函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. tip:JavaScript对大小写敏感.关键词function必须是小写,并且必须以与函数名称相同的大小写 ...
- Spring5:事务管理【整合Mybatis】
Spring 整合Mybatis 1:导入依赖 <dependencies> <!--测试依赖--> <dependency> <groupId>jun ...
- 挑战全网最幽默的Vuex系列教程:第三讲 Vuex旗下的Mutation
写在前面 上一讲「Vuex 旗下的 State 和 Getter」,告诉了我们怎么去使用仓库 store 中的状态数据.当然,光会用肯定还不够,大部分的应用场景还得对这些状态进行操控,那么具体如何操控 ...
- Neo4J 查找两节点之间的路径
# 两节点之间的所有路径MATCH p=(a)-[*]->(b)RETURN p # a->b 直接连接MATCH p=(a)-[]->(b)RETURN p # a-...> ...
- C# 基础知识系列-13 常见类库(三)
0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...
- docker(1)
什么是Docker? Docker 最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新. Docker使用 ...
- Docker安装和基本操作
一.Docker安装 CentOS7安装Docker CE $sudo yum install -y yum-utils device-mapper-persistent-data lvm2 $sud ...
- WordPress发布文章/页面时自动添加默认的自定义字段
如果你每篇文章或页面都需要插入同一个自定义字段和值,可以考虑在WordPress发布文章/页面时,自动添加默认的自定义字段.将下面的代码添加到当前主题的 functions.php 即可: 1 2 3 ...
- Linux 下如何产生core文件(core dump设置)
转自:https://blog.csdn.net/star_xiong/article/details/43529637 今天在Linux下调试C程序时,出现段错误,习惯性的ls下当前目录,发现没有生 ...
- INTERVIEW #5
笔试 150min,3题,每题100分,自己果然还是个蒟蒻呢~ 最近状态好差,虽然做了一些题,但还是考得稀烂,大概有几点需要加强: 独立做题,不要一边看板子一边写代码,更不要一开始就看题解: 对之前研 ...