SpringMVC中JSON数据交互

JSON数据交互

响应JSON数据
  1. 添加依赖:

对于Gson和jackson这两个json处理依赖,直接添加即可。
除此之外,其他的json解析器如fastjson都需要手动配置HttpMessageConverter.
实际上,在SpringMVC中,是由一个名叫HttpMessageConverter的类来提供对象到JSON字符串的转换的。而SpringMVC默认就提供了Gson和Jackson的HttpMessageConverter,分别是org.springframework.http.converter.json.GsonHttpMessageConverter和MappingJackson2HttpMessageConverter。对于其他的JSON解析器,只需要开发者手动配置一下HttpMessageConverter即可。
本案例使用 jackson处理

Maven坐标

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
	<version>2.5.2</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.5.2</version>
</dependency>

在这里插入图片描述

2.在返回对象上添加@ResponseBody注解即可

@Controller
public class UserController {

	/**
	 * 响应给客户端的是一个user对象 对应的JSON数据
	 * 	1.导入Jackson的依赖
	 * 	3.在处理方法中添加@ResponseBody注解 
	 */
	@RequestMapping("/demo1")
	@ResponseBody
	public User demo1(){
		User user = new User();
		user.setId(1);
		user.setName("阿猫");
		user.setAddress("sz");
		return user;
	}

	@RequestMapping("/demo2")
	@ResponseBody
	public List<User> demo2(){
		return Arrays.asList(
				new User(1,"阿猫","sz"),
				new User(2,"阿狗","bj"),
				new User(3,"张三","sh"));
	}
	
	@RequestMapping("/demo3")
	@ResponseBody
	public Map<String, Object> demo3(){
		List<User> list = Arrays.asList(
				new User(1,"阿猫","sz"),
				new User(2,"阿狗","bj"),
				new User(3,"张三","sh"));
		Map<String, Object> map = new HashMap<>();
		map.put("total", 1);
		map.put("rows", list);
		return map;
	}
}

测试
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

额外说明:
   默认情况下,JSON处理的HttpMessageConverter在org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter类中,
   如果当前项目的classpath下有jackson或者gson的依赖,则会被该类自动加载,然后,创建相应的HttpMessageConverter。

对于fastjson,由于系统未提供自动支持,因此需要开发者手动配置fastjson的HttpMessageConverter,配置方式如下:

1.引入fastjson依赖
2.加入配置:

<mvc:annotation-driven validator="validatorFactoryBean">
		<mvc:message-converters>
			<bean
				class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

HttpMessageConverter承担两个事:
1.将请求结果转为json
2.将浏览器发送来的json转为对象

接收JSON数据

注意:json只能是在请求体中,因此,json只能放在post或者put请求中,
注意,请勿使用get/delete请求去测试json参数传递。

示例代码如下:

	/**
	 * 接收一个JSON格式的数据,需要框架帮我们自动转化为相关的Java对象
	 * 客户端提交的数据需要通过 AJAX POST方式提交JSON数据
	 * 需要在新参前加@RequestBody
	 * @RequestBody:会把请求过来的JSON数据转成对象;主要用来接收前端传递给后端的json字符串中的数据的
	 */
	@RequestMapping("/demo")
	@ResponseBody
	public void demo4(@RequestBody User user){
		System.out.println(user);
	}

通过jquery的ajax发送json数据测试

注意: 1.需要导入jquery.min.js包
	  2.需要配置静态资源放行
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
</head>
<body>
	<input type="button" value="提交JSON数据" onclick="demo();">
	<script type="text/javascript">
		function demo(){
			$.ajax({
	              type: 'POST',
	              url: "demo",
	              contentType: "application/json",//如果想以json格式把数据提交到后台的话,这个必须有,否则只会当做表单提交
	              data: JSON.stringify({"id":18,"name":"sam","address":"12"}),//JSON.stringify()必须有,否则只会当做表单的格式提交
	              dataType: "json",//期待返回的数据类型
	              success: function(data){	
	                  alert("success:"+data);
	              },
	              error:function(data){
	                  alert("error"+data); 
	              }
	            });
		}
	</script>
</body>
</html>

在这里插入图片描述在这里插入图片描述
在springmvc中,直接接收json参数,如果参数中有日期的话,
不需要定义日期类型转换器,日期的转换由gson/jackson/fastjson来提供。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值