json的官方網絡媒體類型:application/json。
擴展名為:.json。
是一種數據交換格式。
Json 語法:
數據使用鍵/值對表示
使用大括號保存對象,每個名稱後面跟著一個 ':' 冒號,鍵值對之間用 ',' 逗號分隔。
使用方括號保存數組,數組使用 ',' 分割。
JSON 與 XML文件對比
冗余度:
XML 比 JSON冗余,因此編寫 JSON更快。
數組用法:
XML不包含數組,而 JSON 包含數組
由前台 JSON 字符串到後台的 Java數據類型,過程其實是根據 JSON 和 Java的類型映射碼表進行的解碼
且在Java中,JSONObject 對應的就是 java.util.Map,JSONArray 對應的是 java.util.List,可以使用 Map 或 List的標准操作訪問他們。
JS 中將 JSON 字符串轉換為 JSON 對象:
(1)var jsonObj = eval('(' + jsonStr + ')')
(2)var jsonObj = JSON.parse(jsonStr);
JS 中將 JSON 對象轉換為 JSON 字符串:
(1)var jsonStr = jsonObj.toJSONString();
(2)var jsonStr = JSON.stringify(jsonObj);
JSON 與 Ajax
Ajax dataType:預期服務器返回的數據類型,指定為 "json",則將返回的Json字符串轉換為Json對象或Json數組。
Java 解碼 Json:
導包:net.sf.json.JSONArray 和 net.sf.json.JSONObject
解碼:
將請求的 Json 字符串轉化為 JSON 對象:
JSONObject jsonObj = JSONObject.fromObject(str);
將請求的 Json 字符串轉化為 JSON 數組對象:
JSONArray jsonArr = JSONArray.fromObject(str);
if(jsonArr.size()>0){
for(int i=0;i<jsonArr.size();i++){
// 遍歷 jsonarray 數組,把每一個對象轉成 json 對象
JSONObject jsonObj = jsonArr.getJSONObject(i);
}
}
疑問:
在不指定 dataType 的情況下發送ajax請求,
若在後台指定響應類型為 json,那我響應成功的回調函數接收到的值是 json 對象還是一個字符串?
在指定 dataType 的情況下發送ajax請求,
若在後台沒有指定響應類型,響應成功的回調函數接收到的值是 json 對象還是一個字符串?
需不需要同時指定?