您的位置:首页 > 科技 > 能源 > 浙江省工程建设信息网_今天重庆发生大新闻_百度怎么发广告_中国国家人事人才培训网

浙江省工程建设信息网_今天重庆发生大新闻_百度怎么发广告_中国国家人事人才培训网

2024/9/21 18:19:59 来源:https://blog.csdn.net/pingguocu3/article/details/142287472  浏览:    关键词:浙江省工程建设信息网_今天重庆发生大新闻_百度怎么发广告_中国国家人事人才培训网
浙江省工程建设信息网_今天重庆发生大新闻_百度怎么发广告_中国国家人事人才培训网

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



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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com