菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串
原创地址:http://blog.csdn.net/gwblue/article/details/43269323
一、概述
不同格式的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等对象。这样的方法让我们开发人员开发效率大大的提高了
不同格式的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等对象。这样的方法让我们开发人员开发效率大大的提高了