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
喜欢的朋友记得点赞、收藏、关注哦!!!