• Spring Boot返回json数据及完美使用FastJson解析Json数据


     Spring Boot返回json数据

    视频地址:http://www.iqiyi.com/w_19rubxzsr5.html  

    博文参考:https://blog.csdn.net/linxingliang/article/details/51582294

    Spring Boot完美使用FastJson解析Json数据

     

    视频地址: http://baidu.iqiyi.com/watch/0669833408793393358.html 

    博文参考:
    https://my.oschina.net/sdlvzg/blog/1153921
    http://412887952-qq-com.iteye.com/blog/2413390

    代码备份:

    App.java

    package edu.shy.javaee;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
    import org.springframework.context.annotation.Bean;
    import org.springframework.http.MediaType;
    import org.springframework.http.converter.HttpMessageConverter;
    
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import com.alibaba.fastjson.support.config.FastJsonConfig;
    import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
    
    //extends WebMvcConfigurerAdapter
    
    @SpringBootApplication  
    public class App{
        
    //    @Override
    //    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    //        
    //        super.configureMessageConverters(converters);
    //        //1、定义一个convert转换消息的对象
    //        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
    //        //2、添加fastjson的配置信息
    //        FastJsonConfig fastJsonConfig = new FastJsonConfig();
    //        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    //        //2-1 处理中文乱码问题  
    //        List<MediaType> fastMediaTypes = new ArrayList<>();  
    //        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);  
    //        fastConverter.setSupportedMediaTypes(fastMediaTypes);  
    //        //3、在convert中添加配置信息
    //        fastConverter.setFastJsonConfig(fastJsonConfig);
    //        //4、将convert添加到converters中
    //        converters.add(fastConverter);
    //    }
        
        //引入Fastjson解析json,不使用默认的jackson
        //必须在pom.xml引入fastjson的jar包,并且版必须大于1.2.10
        @Bean
        public HttpMessageConverters fastJsonHttpMessageConverters() {
            //1、定义一个convert转换消息的对象
            FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
            //2、添加fastjson的配置信息
            FastJsonConfig fastJsonConfig = new FastJsonConfig();
            fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
            //2-1 处理中文乱码问题  
            List<MediaType> fastMediaTypes = new ArrayList<>();  
            fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);  
            fastConverter.setSupportedMediaTypes(fastMediaTypes); 
            //3、在convert中添加配置信息
            fastConverter.setFastJsonConfig(fastJsonConfig);
            //4、将convert添加到converters中
            HttpMessageConverter<?> converter = fastConverter;
            return new HttpMessageConverters(converter);
        }
    
        /**
         * @param args
         * @throws Exception
         */
        public static void main( String[] args ) throws Exception
        {
            SpringApplication.run(App.class,args);
        }
    }

    JsonDemo.java

    package edu.shy.javaee;
    
    import java.util.Date;
    
    import com.alibaba.fastjson.annotation.JSONField;
    
    /**
     * 这是一个测试实体类
     * @author yansixing
     * @date 2018年5月10日 下午2:43:26
     */
    public class JsonDemo {
        private int id;        // 主键
        private String name;        // 测试名称
        
        @JSONField(serialize=false)            //转为JSON时不包括此属性
        private String remark;    //备注
        
        @JSONField(format="yyyy-MM-dd HH:mm")        //转为JSON时按格式转换
        private Date createTime;
        
        
        public String getRemark() {
            return remark;
        }
        public void setRemark(String remark) {
            this.remark = remark;
        }
        public Date getCreateTime() {
            return createTime;
        }
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    HelloController.java

    package edu.shy.javaee;
    
    import java.util.Date;
    
    import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /** 
     * 在这里我们使用RestController (等价于@Controller和@RequestBody)
     * @author yansixing
     * @date 2018年5月9日 下午3:46:20
     */
    /** 
     * @author yansixing
     * @date 2018年5月10日 下午3:14:52
     */
    /** 
     * @author yansixing
     * @date 2018年5月10日 下午3:14:54
     */
    /** 
     * @author yansixing
     * @date 2018年5月10日 下午3:14:58
     */
    @RestController
    @EnableAutoConfiguration
    public class HelloController {
        
        @RequestMapping("/")
        String home(){
            return "Hello Spring Boot!";
        }
        
        @RequestMapping("/hello/{myName}")
        String index(@PathVariable String myName){
            return "Hello "+myName+"!!!";
        }
        
        /**
         * Spring Boot默认使用的Json解析框架是Jackson
         * 请求地址:http://127.0.0.1:8089/getJson
         * @return
         */
        @RequestMapping("/getJson")
        public JsonDemo getJson(){
            JsonDemo demo=new JsonDemo();
            demo.setId(1);
            demo.setName("张三");
            demo.setCreateTime(new Date());
            demo.setRemark("remark");
            return demo;
        }
    }

    pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>edu.shy.javaee</groupId>
        <artifactId>sprint-boot-hello</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>sprint-boot-hello</name>
        <url>http://maven.apache.org</url>
        <!--sprint boot 父节点依赖,引入这个之后相关的引入就不需要加version配置,sprint boot 会自动选择最合适的版本进行添加 -->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.0.BUILD-SNAPSHOT</version>
        </parent>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <!-- 指定一下jdk的版本,这里我们 使用jdk1.8,默认1.6 -->
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!-- spring-boot-starter-web:MVC,AOP的依赖包 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
                <version>1.7.24</version>
            </dependency>
            
            <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
            <!-- 改变spring boot 默认的json解析,通过引入fastjson改变 -->
            <!-- fastjson版本必须 大于1.2.10 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.23</version>
            </dependency>
            
        </dependencies>
    
        <!-- Package as an executable jar -->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <!-- Add Spring repositories -->
        <!-- (you don't need this if you are using a .RELEASE version) -->
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <url>http://repo.spring.io/snapshot</url>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
            <repository>
                <id>spring-milestones</id>
                <url>http://repo.spring.io/milestone</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-snapshots</id>
                <url>http://repo.spring.io/snapshot</url>
            </pluginRepository>
            <pluginRepository>
                <id>spring-milestones</id>
                <url>http://repo.spring.io/milestone</url>
            </pluginRepository>
        </pluginRepositories>
    
    </project>
  • 相关阅读:
    虚拟化VMware之虚拟机备份(1)
    虚拟化VMware之虚拟机备份(1)
    柯塔娜大合唱,互联网安全观
    柯塔娜大合唱,互联网安全观
    如何在虚拟机上Centos系统安装Nginx服务
    给已验证登录的用户添加访问限制
    Python爬虫入门教程 23-100 石家庄链家租房数据抓取
    login_required装饰器(1)
    Oracle 18c 新特性:动态 Container Map 增强 Application Container 灵活性
    如果登录不成功,跳转到登录页面
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/9020504.html
Copyright © 2020-2023  润新知