如何从前端传递Json对象数组到后台
场景:给后台传递对象数组,后台通过Gson解析,并把对象存放到List集合里面。
- 在使用Gson前导入Gson的jar包
gson-1.4.jar
,在jar包里面有其核心类:Gson,JsonParser,JsonObject,JsonArray,这些核心类在后面都有使用。 - 使用JQuery的ajax传递Json数据到后台
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'GsonDemo.jsp' starting page</title>
<script src="js/jquery-3.1.1.min.js"></script><!--引用jquery文件-->
<script type="text/javascript" language="javascript">
function saveData(){
//创建一个student对象数组
var student=[{"name":"tony","age":21},{"name":"chenzitong","age":22}];
$.ajax({
type:"POST",
url:"填写后台servlet的路径",
data:{"datalist":JSON.stringify(student)},//对象数组要通过JSON.stringify转化为json字符串格式。
dataType:"json", //数据的格式为json
success:function(data){
alert("success");},
error:function(){
alert("insert error");}
});
}
</script>
</head>
<body>
<!--通过按钮提交ajax请求-->
<button id="demo" onclick="saveData()">Click</button><br>
</body>
</html>
3.后台servlet接收前端传递过来的json格式的对象数组
public class GsonServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String std = request.getParameter("datalist");//获取json格式的对象数组
Gson gson = new Gson();//创建一个Gson对象
List<Student> stus = new ArrayList<Student>();
JsonParser parser = new JsonParser();//创建一个JsonParser
//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象,然后通过JsonElement对象生成JsonArray序列
JsonArray jarray = parser.parse(std).getAsJsonArray();
//通过JsonArray把对象从中提取到List集合中来
for (JsonElement jsonElement : jarray) {
stus.add(gson.fromJson(jsonElement, Student.class));
}
System.out.println(stus.toString());
}
}
}
//运行的结果:[Student [name=tony, age=21], Student [name=chenzitong, age=22]]
通过简单的小例子展现后台如何解决前端传递过来的对象数组并把对象数组放到集合中去。关于更多的Gson教程可以参考:Gson使用指南-简书