菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串

一、概述

不同格式的JSON串传到后台来实现功能这个是我们经常要做的一件事,本篇博客就给大家介绍四种不同的JSON串传到后台后台如何用@RequestBody解析这些不同格式的JSON串的。

二、代码展示

需要引用的jar包

1.xml配置

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.spring</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
	<context:component-scan base-package="com.gaowei.JSON" />
	<mvc:annotation-driven />

</beans>
2.java代码

Userinfo.java

package com.gaowei.entity;

public class Userinfo {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
Test.java

package com.gaowei.JSON;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.gaowei.entity.Userinfo;

@Controller
public class Test {

	@RequestMapping(value="getJSON1")
	public void getJSON1(@RequestBody Userinfo userinfo){
		System.out.println("------getJSON1---start----");
		System.out.println(userinfo.getUsername());
		System.out.println(userinfo.getPassword());
		System.out.println("------getJSON1---end----");
	}

	@RequestMapping(value="getJSON2")
	public void getJSON2(@RequestBody ArrayList<String> list){
		System.out.println("------getJSON2---start----");
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		System.out.println("------getJSON2---end----");
	}

	@RequestMapping(value="getJSON3")
	public void getJSON3(@RequestBody List<Map> list){
		System.out.println("------getJSON3---start----");
		for (int i = 0; i < list.size(); i++) {
			Map map=list.get(i);
			System.out.println(map.get("username")+" "+map.get("password"));
		}
		System.out.println("------getJSON3---end----");
	}

	@RequestMapping(value="getJSON4")
	public void getJSON4(@RequestBody Map map){
		System.out.println("------getJSON4---start----");
		System.out.println(map.get("username"));
		List<Map> workList=(List)map.get("work");
		for (int i = 0; i < workList.size(); i++) {
			Map eachAddressMap=workList.get(i);
			System.out.println("address="+eachAddressMap.get("address"));
		}
		Map schoolMap=(Map)map.get("school");
		System.out.println(schoolMap.get("name"));
		System.out.println(schoolMap.get("address"));
		System.out.println("------getJSON4---end----");
	}
}
3.界面代码

Test.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <script src="jquery-1.3.2.js">
        </script>
        <script src="json2.js">
        </script>
        <script>
            function userinfo(username, password){
                this.username = username;
                this.password = password;
            }

            function sendAjax1(){
                var userinfoRef = new userinfo('中国', '中国人');
                var jsonStringRef = JSON.stringify(userinfoRef);
                $.ajax({
                    type: "POST",
                    data: jsonStringRef,
                    url: "getJSON1.spring?t=" + new Date().getTime(),
                    contentType: "application/json"
                });
            }

            function sendAjax2(){
				var myArray =new Array();
				myArray[0]="中国1";
				myArray[1]="中国2";
				myArray[2]="中国3";
				myArray[3]="中国4";
				var jsonString=JSON.stringify(myArray);
			      $.ajax({
	                    type: "POST",
	                    data: jsonString,
	                    url: "getJSON2.spring?t=" + new Date().getTime(),
	                    contentType: "application/json"
	                });
                }

            function sendAjax3(){
					var myArray=new Array();
					myArray[0]= new userinfo('中国1', '中国人1');
					myArray[1]= new userinfo('中国2', '中国人2');
					myArray[2]= new userinfo('中国3', '中国人3');
					myArray[3]= new userinfo('中国4', '中国人4');
					var jsonString=JSON.stringify(myArray);
				      $.ajax({
		                    type: "POST",
		                    data: jsonString,
		                    url: "getJSON3.spring?t=" + new Date().getTime(),
		                    contentType: "application/json"
		                });
                }

            function sendAjax4(){
                var jsonObject={
					"username":"accp",
					"work":[{
						"address":"address1"
						},{
						"address":"address2"
							}],
						"school":{
							"name":"tc",
							"address":"pjy"
							}
                        }
				var jsonString=JSON.stringify(jsonObject);
			      $.ajax({
	                    type: "POST",
	                    data: jsonString,
	                    url: "getJSON4.spring?t=" + new Date().getTime(),
	                    contentType: "application/json"
	                });
            }
        </script>
    </head>
    <body>
        <input type="button" onclick="sendAjax1()" value="sendAjax1"/>
        <br/>
        <input type="button" onclick="sendAjax2()" value="sendAjax2">
        <br/>
        <input type="button" onclick="sendAjax3()" value="sendAjax3">
        <br/>
        <input type="button" onclick="sendAjax4()" value="sendAjax4">
        <br/>
    </body>
</html>
4.效果图

三、总结。

这里要注意jar包的引用不要把Spring的所有jar包都引用了会引起jar包冲突而导致报HTTP 415的错误。@RequestBody这个方法很强大可以把JSON串转化为实体类、ArryList、Map等对象。这样的方法让我们开发人员开发效率大大的提高了

时间: 2024-07-30 22:48:15

菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串的相关文章

菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析

一.概述. SpringMVC在服务端把客户端传过来的JSON字符串,并把JSON字符串转成 JSON对象并取得其中的属性值,这个在项目中经常用到. 二.代码演示. 需要添加的jar包. 2.1 web.xml. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns=&

菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架也是界面把信息传输到Contorller层的一种架构,通过这个架构可以让我们把页面和Contorller层解耦,使得开发人员的分工更加明确. 二.代码演示. 1.首先配置SpringMVC环境. 1.1导入jar. 值得注意的是红色标记的commons-logging这个jar包一定得引入进去不然会

菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层

一.概述. SpringMVC中界面请求Contorller1,Contorller1需要重定向到Contorller2中显示其他页面或者做一些业务逻辑,Spring中提供了这个功能利用"redirect:/"来进行重定向. 二.代码演示. 1.界面 Login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF

菜鸟学习Spring——SpringMVC注解版将URL中的参数转成实体

一.概述 将URL中参数转成实体在我们项目中用的很多比如界面提交表单请求后台的Contorller的时候通过URL传递了一串参数到后台,后台通过Spring让界面的字段与实体的字段映射来实现给后台的实体属性赋值. 二.代码演示. 2.1 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-in

使用GSON和泛型解析约定格式的JSON串(转)

时间紧张,先记一笔,后续优化与完善. 解决的问题: 使用GSON和泛型解析约定格式的JSON串. 背景介绍: 1.使用GSON来进行JSON串与java代码的互相转换. 2.JSON的格式如下三种: 写道 #第一种: {"success":true,"data":{"averageStarLevel":4.7,"remarkCount":10}} #第二种: {"success":true,"da

springMVC 注解版

关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签 分类: Java开发 源代码分享2012-06-14 10:59 7721人阅读 评论(2) 收藏 举报 springmvcjavaemailpathstring 主要用到了spring-aop-2.5.6.jar的AOP支持包! 之前我们在AccountService中加入了注解@Transactional标签,但是要想要真正发挥事务作用,还需要一些配置. 主要需要调整dao.xml文件 dao

菜鸟学习Spring——60s配置XML方法实现简单AOP

一.概述. 上一篇博客讲述了用注解的形式实现AOP如今讲述第二种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作參照上一篇博客<菜鸟学习Spring--60s使用annotation实现简单AOP> 文件夹结构: 事实上比起上一篇博客中用annotation来实现AOP的方式我们仅仅要把SecurityHandler.java和配置文件applicationContext.xml更改为以下内容就能够了.以下我把这两个文件的代码写下来. SecurityHandler.java

springMVC(注解版笔记)

springMVC(注解版) 较之于非注解版本,发生一下变化: 1.配置文件需要配置的标签有: <!-- 包的扫描,此包下面的所有包都启用注解 --> <context:component-scan base-package="com.mindreader.springmvc.controller" /> <!-- 开启注解 --> <!--包的映射--> <bean class="org.springframework.

BlazeDS+Spring+SpringMVC 注解方式

BlazeDS是Flex与java通信的众多方式中的一种,其优点在于开源使用起来方便且性能能够满足中小型应用的常规要求,所以是很多中小型java应用与flex通信的首选方式. 而使用BlazeDS手动配置的配置文件比较多,若是借用spring的注解方式就能方便地进行配置了.以下为配置的步骤: 第一步当然是下载BlazeDS的相关jar包了,下载地址:http://sourceforge.net/adobe/blazeds/wiki/Downloads/; 还需要下载spring的相关包,这里不再