SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter
2020-06-06 07:00
405 查看
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系列二之json解析
- CSDN日报191120:《吊打面试官》系列-消息队列基础;Vue + Spring Boot 项目实战
- 2019最新Spring Boot从入门到实战 基础实战系列教程全集
- SpringBoot基础系列-使用日志
- Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控
- rabbitmq实战系列4--springboot整合rabbitmq实现限流与并发
- Spring Boot HTTP over JSON 的错误码异常处理
- Spring Boot系列之基础上使用总结
- Java Web系列:Spring Boot 基础
- springBoot基础系列--properties配置
- SpringBoot系列教程JPA之query使用姿势详解之基础篇
- SpringBoot系列教材 (七)- 基础 - springboot 错误异常处理统一办法
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- Spring Boot干货系列:(三)启动原理解析
- [置顶] spring boot项目实战之工具篇(json)
- (转)SpringBoot系列—基础概述
- Spring Boot实战(一)Spring基础 1.1 Spring概述
- Spring Boot实战(一)Spring基础 1.2 Spring项目快速搭建(基于Maven)
- 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
- Spring Boot 外部化配置实战解析