一、概述

不同格式的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等对象。这样的方法让我们开发人员开发效率大大的提高了

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

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

    一.概述. SpringMVC在服务端把客户端传过来的JSON字符串,并把JSON字符串转成 JSON对象并取得其中的属性值,这个在项目中经常用到. 二.代码演示. 需要添加的jar包. 2.1 we ...

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

    一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架 ...

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

    一.概述 将URL中参数转成实体在我们项目中用的很多比如界面提交表单请求后台的Contorller的时候通过URL传递了一串参数到后台,后台通过Spring让界面的字段与实体的字段映射来实现给后台的实 ...

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

    一.概述. SpringMVC中界面请求Contorller1,Contorller1需要重定向到Contorller2中显示其他页面或者做一些业务逻辑,Spring中提供了这个功能利用"r ...

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

    时间紧张,先记一笔,后续优化与完善. 解决的问题: 使用GSON和泛型解析约定格式的JSON串. 背景介绍: 1.使用GSON来进行JSON串与java代码的互相转换. 2.JSON的格式如下三种: ...

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

    一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...

  7. springMVC(注解版笔记)

    springMVC(注解版) 较之于非注解版本,发生一下变化: 1.配置文件需要配置的标签有: <!-- 包的扫描,此包下面的所有包都启用注解 --> <context:compon ...

  8. springMVC 注解版

    http://blog.csdn.net/liuxiit/article/details/5756115 http://blog.csdn.net/hantiannan/article/categor ...

  9. spring mvc注解版01

    spring mvc是基于servlet实现的在spring mvc xml版中已经说过了,注解版相较于xml版更加简洁灵活. web项目的jar包: commons-logging-1.1.3.ja ...

随机推荐

  1. RUCM简介

    一.动机 UCM:用例建模,主要用于结构化和文档需求方面. UCSs:用例规格说明书,通常是文本文档,所以描述中不可避免含有歧义. RUCM:限制性用例建模.目标 G1.使UCMs更加可理解并且更精确 ...

  2. (原創) Gvim 個人習慣常用設定 (vim)

    不定期更新這篇,因為查詢到好用的設定或者插件就會更新自己的設定. "set nocompatible let $LANG='zh_TW.UTF-8' set langmenu=zh_tw.u ...

  3. win7运行nodejs,返回IPV6:::ffff:127.0.0.1

    问题: 在win7上使用telnet连接node生成的服务器,在获取ip的过程中出现的问题. win7默认开启IPV6,所以获取的IP地址带有::ffff:前缀. 如果程序中使用到了IP地址,有可能会 ...

  4. FPGA基础学习(4) -- 时序约束(理论篇)

    在FPGA 设计中,很少进行细致全面的时序约束和分析,Fmax是最常见也往往是一个设计唯一的约束.这一方面是由FPGA的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的.好的时序约束可以指导布局布 ...

  5. javascrip 中排序的函数怎么理解

    其中s是数组[888,2222,9,4]:我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的? 那个function的作用就是比较两个数的大小用的,然后返回结果的正负作为排 ...

  6. 使用IDEA完成maven整合SSH框架时抛出Hibernate : Mapping (RESOURCE) not found

    切入主题,看看今天的错误是如何发生的: 首先这是我的项目路径,java 是 Sources Root , resources 是 Resources Root ,放了所需要的配置文件,其中 Hiber ...

  7. indexOf获取字符位置

    先定义一个字符串: var aString = "you are beautiful,so beautiful,and i love you ver much"; 拿到第一个逗号的 ...

  8. ZOJ - 2676 01分数规划 浮点ISAP

    题意:求最小割集\(C\),使得\(\frac{\sum_{i∈C} cost_i}{|C|}\)最小 模型就是01分数规划\(\frac{\sum_{i=1}^{m}cost_i*x}{\sum_{ ...

  9. POJ - 3764 01字典树+前缀异或和

    异或关于前缀的特性:[u,v]=[1,u]^[1,v] 注意是路径,假设1为根,prexor[1]不保留数值 /*H E A D*/ int to[maxn<<1],nxt[maxn< ...

  10. Linux中断分层--工作队列

    1. 工作队列是一种将任务推后执行的方式,它把推后的任务交由一个内核线程去执行.这样中断的下半部会在进程上下文执行,他允许重新调度甚至睡眠.每个被推后的任务叫做“工作”,由这些工作组成的队列称为工作队 ...