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),我们将第一时间核实后及时予以删除。