SpringMVC Json对象与java对象互转

SpringMVC Json对象与java对象互转

​ SpringMVC原生方式依赖的是jackson/gson,使用这两种方式,只需要导入jar包即可。如果使用其他方式现Json与对象之间自动互转,需要在xml中配置转化器。

  • 接收Json字符串,自动转化为java对象

  • 返回java对象,自动转化为Json字符串

  • fastjson方式实现

    接收Json字符串,自动转化为java对象

    以jackson为例,导入jar包

    jackson-annotations-2.5.0.jar
    jackson-core-2.5.2.jar
    jackson-databind-2.5.2.jar
    

    前端传入一个json数据

    <input type="button" value="提交JSON数据" onclick="fun1();">
    	<script type="text/javascript">
    		function fun1(){
    			$.ajax({
    	              type: 'POST',
    	              url: "fun5",
    	              contentType: "application/json",//如果想以json格式把数据提交到后台的话,这个必须有,否则只会当做表单提交
    	              data: JSON.stringify({"id":66,"name":"lisi","address":"sz"}),//JSON.stringify()必须有,否则只会当做表单的格式提交
    	              dataType: "json",//期待返回的数据类型
    	              success: function(data){
    	                  alert("success:"+data);
    	              },
    	              error:function(data){
    	                  alert("error"+data); 
    	              }
    	            });
    		}
    	</script>
    

    通过control中的方法接收

    	/**
    	 * 接收客户端提交的json数据
    	 *    注意:
    	 *        1.客户端提交的json数据必须是post方式提交
    	 *        2.在接收数据的形参前我们需要添加@RequestBody
    	 */
    	@RequestMapping("/fun5")
    	@ResponseBody
    	public String fun5(@RequestBody User user){
    		System.out.println(user);
    		return "ok";
    	}
    

    前台页面

    image.png

    控制台输出

    image.png

返回java对象,自动转化为Json字符串

返回各种类型的java对象,自动转化为json字符串。

方法举例

	/**
	 * 返回一个JSONObject
	 * @return
	 */
	@RequestMapping("/fun1")
	@ResponseBody
	public User fun1(){
		return new User(12,"张三","宝安");
	}
	
	/**
	 * 返回一个JSONArray
	 * @return
	 */
	@RequestMapping("/fun2")
	@ResponseBody
	public List<String> fun2(){
		return Arrays.asList("张三","李四","王五");
	}
	
	/**
	 * 数组的类型是自定义对象
	 * @return
	 */
	@RequestMapping("/fun3")
	@ResponseBody
	public List<User> fun3(){
		return Arrays.asList(new User(12,"张三","宝安"),new User(13,"张三1","宝安1"),new User(14,"张三2","宝安2"));
	}
	
	/**
	 * 数组的类型是自定义对象
	 * @return
	 */
	@RequestMapping("/fun4")
	@ResponseBody
	public Map<String, Object> fun4(){
		Map<String, Object> map = new HashMap<>();
		map.put("total", 100);
		map.put("rows", Arrays.asList(new User(12,"张三","宝安"),new User(13,"张三1","宝安1"),new User(14,"张三2","宝安2")));
		return map;
	}

页面输出

返回对象自动转json

image.png

返回list自动转json

image.png

返回list自动转json

image.png

返回Map<String, Object>自动转json

image.png

总结:从json对象转java对象,导入相关jar包并在形参类型前加注解 @RequestBody

返回java对象自动转json对象,导入相关jar包在方法上注解 @ResponseBody

项目打包 提取码:7yx1 环境:eclipse

fastjson方式实现

导入jar包

fastjson-1.2.47.jar

在springmvc.xml中添加转换器

<!-- 开启SpringMVC注解 -->
	<mvc:annotation-driven  >
		<!-- 添加fastjson的转换器 -->
		<mvc:message-converters>
			<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

其余操作与jactson方式实现一样。

项目打包 提取码:8ksg 环境:eclipse

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值