当前位置: 首页 >Java技术 > SpringMVC---- SpringMVC返回JSON数据

SpringMVC---- SpringMVC返回JSON数据

目录

一. JSON

二、JSON数据

三、返回JSON配置步骤

四、返回JSON数据格式

一. JSON
现在的开发中,几乎都是前后端分离的形式,越来越多的请求使用Ajax的异步请求,而不再是传统的跳转,使用Ajax异步请求之后,我们后端处理结果大多以JSON的形式进行响应,响应给前端,前端得到响应结果后,进行处理和渲染。在SpringMVC中,使用JSON非常的简单,SpringMVC中可以将集合等数据自动的转换成JSON数据格式,当然我们需要加入JSON相关的依赖。

二、JSON数据格式
JSON数据就是一段字符串而已,只不过有不同意义的分隔符将其分割开来而已,我们看上面的符号,里面有[] ,{}等符号。

1、[]中括号代表的是一个数组 

 [{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]

2、{}大括号代表的是一个对象  

        {"name":"胡小威" , "age":20 , "male":true}           

3、混合 

     {'total':80,'rows':10,[{'bookNane':'三资金','price':100},{'bookName':'金刚经','price':200}]

双引号""表示的是属性值
冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型

三、返回JSON配置步骤
1、首先导入JSON的相关依赖
在pom.xml中配置

<!--jackson-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>
2、在springmvc.xml文件中配置JSON的消息转换器

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJackson2HttpMessageConverter"/>
            </list>
        </property>
    </bean>
    <bean id="mappingJackson2HttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <!--处理中文乱码以及避免IE执行AJAX时,返回JSON出现下载文件-->
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
                <value>text/json;charset=UTF-8</value>
                <value>application/json;charset=UTF-8</value>
            </list>
        </property>
    </bean>
3、在控制层使用@ResponseBody注解标记请求处理方法

        被该注解所标记的请求处理方法将返回JSON格式的数据,绕开视图解析器

注:开启注解式开发使用

四、返回JSON数据格式
1、返回List泛型格式的JSON数据

@RequestMapping("/queryListBooks")
    @ResponseBody
    public List<Book> queryListBooks(Book book,HttpServletRequest request){
        PageBean pageBean=new PageBean();
        pageBean.setRequest(request);
        List<Book> books = bookService.queryBookPager(book, pageBean);
        retu   books;
    };


2、返回实体类型的JSON数据

@RequestMapping("/querySingleBook")
    @ResponseBody
    public Book querySingleBook(Integer bookId){
        Book book = bookService.selectByPrimaryKey(bookId);
        book.setDate(new Date());
        retu book;
    }


在实体类属性中使用@JsonIgnore  

此注解代表在返回JSON数据时会忽略此字段 只在返回实体类时有效

在实体类属性中使用@JsonProperty

在返回实体类的JSON数据格式时,给此字段取别名 只在返回实体类时有效

在实体类中的时间类型的属性使用@JsonFormat(patte = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

在返回实体类的JSON数据格式时,给此字段转换类型为patte属性,因为时区的问题,还需要加上八小时,为东八区。

3、返回Map类型的JSON数据

 @RequestMapping("/querySingleMap")
    @ResponseBody
    public Map<String, Object> querySingleMap(Integer bookId){
        retu  bookService.querySingleMap(bookId);
    }


在此类型中如要时间类型转换,就得去mapper.xml文件中的sql语句用函数转换

4、查询返回List<map>类型的JSON数据

@RequestMapping("/queryMapList")
    @ResponseBody
    public List<Map<String, Object>> queryMapList( ){
           retu bookService.queryBookAll();
    }


5、返回混合类型的JSON数据

@RequestMapping("/queryhybridBooks")
    @ResponseBody
    public Map<String, Object> queryhybridBooks(Book book,HttpServletRequest request){
        PageBean pageBean=new PageBean();
        pageBean.setRequest(request);
        List<Book> books = bookService.queryBookPager(book, pageBean);
        Map<String, Object> json=new HashMap<>();
        json.put("total", pageBean.getTotal());
        json.put("rows", books);
        retu json;
    };


6、返回String类型的JSON数据类型

@RequestMapping("/queryString")
    @ResponseBody
    public String queryString(){
        retu "book/bookList";
    }


代码地址 提取码:8q5b
————————————————
版权声明:本文为CSDN博主「鑫709」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_59610127/article/details/124049678

作者:你七哥哥
来源链接:https://blog.csdn.net/m0_59218114/article/details/124513692

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/68714.html

分享给朋友: