[1] JSON簡介
> JSON全稱 JavaScript Object Notation
> 類似於JS中對象的創建的方法
> JSON和XML一樣,都是一種表示數據的格式
> 但是JSON比XML的存儲和解析性能要高的多,JSON要比XML高個30%左右。
<user>
<name>sunwukong</name>
<age>18</age>
<gender>男</gender>
</user>
{"name":"孫悟空","age":8,"gender":男}
[2] JSON的格式
> JSON字符串不方便閱讀,但是傳輸性能好
> XML方便閱讀,但是傳輸性能差
> JSON的格式和JS對象類型,但是要求屬性名必須使用雙引號。不能使用單引號,也不能不寫引號!
> JSON對象中實際就是一組一組的鍵值對的結構,
鍵和值使用:連接,多個鍵值對之間使用,分開,注意如果是最后一組鍵值對,則千萬不要在加,.
例如: {"屬性名1":屬性值1,"屬性名2":屬性值2,"屬性名3":屬性值3,"屬性名4":屬性值4}
> JSON運行屬性值的類型:
1.字符串
2.數字
3.布爾
4.對象
5.數組
6.null
> 數組:
[屬性1,屬性2,屬性3,屬性4]
[3] JS中使用JSON
JSON對象 --> JSON字符串
JSON.stringify(對象)
JSON字符串 --> JSON對象
JSON.parse(JSON字符串)
[4] Java中使用JSON
> 目前Java中用的比較多的JSON解析工具:
json-lib --> 使用麻煩,解析性能最差
Jackson --> 使用較麻煩,解析性能最好
Gson --> 使用簡單,解析性能中能
- Gson是谷歌出的一款JSON解析工具,使用簡單,且性能較好。
Java對象 --> JSON字符串
//把map轉化為json字符串
Map<String,String> map=new HashMap();
map.put("name", "張三");
map.put("hobby", "籃球");
map.put("genter", "男");
String str=gson.toJson(map);
JSON字符串 --> Java對象
Map<String,String> map2=gson.fromJson(str, Map.class); System.out.println(map2);
[3].通過jQuery實現AJAX
> 使用get和getJSON都會有緩存問題,並且使用get方法不能傳送較多的數據。
> post方法不會有緩存的問題,所以我們開發時使用post方法較多。
[1] post()方法
$.post(url, [data], [callback], [type])
參數:
url:發送AJAX的請求地址,字符串。
data:發送給服務器的請求參數,JSON格式。
callback:當前需要獲取服務器發送的響應時,我們可以通過該回調函數。
jQuery會將響應信息以回調函數的參數的形式返回
type:響應信息的類型,字符串。一般兩個常用值text、json
[2] get()方法
- get方法和post方法使用方式基本一致。
[3] getJSON()方法
getJSON(url, [data], [callback])
getJSON方法和get方法類似,只不過該方法默認的響應類型為JSON,不需要再手動指定。
[4]下面給出一個小例子:(本例子頁面特別簡單,只為了只實現這一個功能)
先導入jQuery所需要的jar包:

我將這個jar包導入了WebContent下的js文件夾在(js文件夾是自己建的)。
之后再jsp中引入jQuery
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.js">
</script>
然后就是jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.js">
</script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
var url="${pageContext.request.contextPath}/Servlet1";
var json={"name":"zhangsan"};
function callback(data){
}
$.get(url,json,callback);
});
});
</script>
</head>
<body>
<button id="btn">確定</button>
</body>
</html>
這樣后台就行接收到這個基於jQuery和json的get請求。
