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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjpj.html