Spring Boot (二) - 返回json数据及自定义json解析
2018-03-26 22:28
891 查看
前言
上一篇介绍了如何初始化一个spring boot 项目,这一节说明一下在spring boot中返回json数据及自定义json解析框架。实践
涉及知识点:@RestController注解
@ResponseBody注解
自定义json解析
内置解析
先创建一个实体类package com.example.demo.pojo; /** * @author ashinlee * @date 2018/3/26 * @time 21:49 */ public class Student { private String name; private int age; private double score; //setter,getter,toString省略,ide自动生成即可 }
回到上一篇中的controller,添加getStudent方法
package com.example.demo.controller; import com.example.demo.pojo.Student; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; /** * @author AshinLee * @date 2018/3/24 * @time 9:41 */ @RestController public class HelloController { @GetMapping("") public String hello(){ return "hello"; } /** * 获得指定id的学生 * @param id * @return */ @GetMapping("/student/{id}") public Object getStudent(@PathVariable int id){ Student student = new Student(); student.setId(id); student.setName("ashin"); student.setScore(100d); return student; } }
写完运行springboot 启动类(@SpringBpptApplication标注的类)
运行完成在浏览器输入:http://localhost:8080/student/1
就会返回:{“name”:”ashin”,”id”:1,”score”:100.0}
在Java中如果标注一个类为controller并加入容器那么就会使用@Controller注解,如果要让请求的一个方法返回json数据,那么我们会在方法上加上@ResponseBody注解,那么如果一个类中多个地方都要返回json数据,特别是写移动端后端的时候我们就可以将@Controller替换为@RestController ,@ResponseBody就不需要再写了。
自定义解析
检查spring boot父工程的依赖显示spring boot 默认用的是jackson<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jdk8</artifactId> <version>2.9.4</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.9.4</version> <scope>compile</scope> </dependency>
那么比如我们习惯使用fastjson(阿里巴巴开源),那么就得自己去定义解析。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>
引入fastjson依赖(不了解maven的再次提醒自行补充)
在启动类继承WebMvcConfigurerAdapter
但在最近新出的 2.0.0版本中该类废弃了需要继承WebMvcConfigurationSupport
package com.example.demo; import com.alibab ba0c a.fastjson.parser.Feature; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.util.List; @SpringBootApplication public class DemoApplication extends WebMvcConfigurationSupport { @Override protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.configureMessageConverters(converters); FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setFeatures(Feature.SupportArrayToBean);//这边可以自己定义 fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastJsonHttpMessageConverter); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
这样就可以了,修改实体类测试
package com.example.demo.pojo; import com.alibaba.fastjson.annotation.JSONField; /** * @author ashinlee * @date 2018/3/26 * @time 21:49 */ public class Student { @JSONField(serialize = false) //不进行解析 private String name; private int id; private double score; }
重新访问:http://localhost:8080/student/1
获得结果: {“id”:1,”score”:100}
这样就完成了自定义json解析,不需要在代码中手动的new对象去转化为json格式。
想一起交流或者有问题的朋友可以关注我的公众号,里面有群聊连接可以一起交流遇到的问题,如果失效可以后台回复我,每天会同步更新
博客连接 : AshinLee’s blog
公众号:
相关文章推荐
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- Spring boot傻瓜教程(二):从数据库里读取数据,返回Json
- Spring boot项目设定返回数据为JSON固定格式
- 2. Spring Boot返回json数据【从零开始学Spring Boot】
- (2)Spring Boot返回json数据【从零开始学Spring Boot】
- Spring-boot返回Json格式数据
- 【Java】SpringBoot 引入fastjson库进行json格式数据返回实例
- spring boot使用fastJson解析数据
- 【Spring Boot】完美使用FastJson解析JSON数据
- Spring Boot完美使用FastJson解析JSON数据(十三)
- SpringBoot入门——返回JSON数据
- (2)spring boot返回json数据
- SpringBoot学习:Spring Boot使用FastJson解析JSON数据
- Spring Boot与Mybatis 借助Fastjson快速完成数据解析入库
- (2)Spring Boot返回json数据【从零开始学Spring Boot】
- 2. Spring Boot返回json数据【从零开始学Spring Boot】
- Spring Boot 学习4--完美使用FastJson解析Json数据
- springboot 返回json格式数据时间格式配置
- spring-boot实现FastJson解析json数据
- spring boot返回json数据