Gson處理前端傳遞過來的Json物件陣列
阿新 • • 發佈:2019-01-04
如何從前端傳遞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使用指南-簡書