有關JSON的個人理解:
JSON其實就是一個獨立於任何編程語言的獨立的輕量的數據交換的東西,方便於人的閱讀和機器的解析。里面的內容還是鍵值對的形式存在的,可以對其進行增刪改查的,但是當從數據庫中調用數據的時候,需要對其進行數據的轉換。
對象格式和數組格式可以互相嵌套!!注意:json的key是字符串(不能以數字開頭) json的value是Object
一、JSON含義:
JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。
json是js的原生內容,也就意味着js可以直接取出json對象中的數據.
json是一種與語言無關的數據交換的格式,作用:使用ajax進行前后台數據交換! 移動端與服務端的數據交換!
(XML也是一種數據交換格式,為什么沒有選擇XML呢?因為XML雖然可以作為跨平台的數據交換格式,但是在JS(JavaScript的簡寫)中處理XML非常不方便,同時XML標記比數據多,增加了交換產生的流量,而JSON沒有附加的任何標記,在JS中可作為對象處理,所以我們更傾向於選擇JSON來交換數據。)
二、JSON定義:
var json = { 鍵 : 值, 鍵 : 值, ..... }
說明 : json中的鍵 用雙引號括起來 值可以是任意類型的數據 ( 嚴格的json值不會出現function (){...} 嚴格的json鍵用雙引號括起來)
三、JSON字符串和對象的區別:
字符串:指使用“”雙引號或’’單引號包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json對象:指符合json格式要求的js對象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
四、獲取JSON數據:
json.鍵 或 json["鍵"]
五、JSON對象的遍歷 :
使用 for ...in
六、JSON數據的存和取:
1、json值的獲取 :
json對象.鍵
json對象["鍵"]
2、json中的值可以是數組
var json = {
"url" : ["1.jpg","2.jpg"],
"con" : ["圖片一","圖片二"]
}
數組中存放json :
[{"uname":"uname","pwd":111},{"uname":22,"pwd":22},{"uname":33,"pwd":999}]
var a = { "person":[{"name":"張三","age":18},{"name":"李四","age":20}], "person1":[{"name":"王五","age":22},{"name":"馬六","age":24}] };
<%@ 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="jquery.min.js"></script> <script type="text/javascript"> function fget(){ $.get( "${pageContext.request.contextPath}/AjaxServlet",//url "name=張三",//請求參數 function(data){ alert(data.str) },//回調函數 "json"//返回的類型 ); } function fpost(){ $.post( "${pageContext.request.contextPath}/AjaxServlet",//url "name=張三",//請求參數 function(data){ alert(data.str) },//回調函數 "json"//返回的類型 ); } function fajax(){ $.ajax({ url:"${pageContext.request.contextPath}/AjaxServlet02",//url async:true, //是否異步,默認是true代表異步 data:{"username":"張三"},//請求參數 type:"post", //請求方式,POST/GET success:function(data){ //回調函數 alert(data.username) }, dataType:"json"//返回的類型 }); } </script> </head> <body> <input type="button" value="ajax的get請求" onclick="fget()"> <input type="button" value="ajax的post請求" onclick="fpost()"> <input type="button" value="ajax的ajax請求" onclick="fajax()"> </body> </html>
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // post解決亂碼 request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); System.out.println(username); // 因為write里面必須是“ 並且json里面也必須是" ,所以需要轉義” 里面是拼接JSON串 // 解決亂碼 response.setContentType("text/html;charset=utf-8"); response.getWriter().write("{\"username\":\""+username+"\"}"); }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post解決亂碼 request.setCharacterEncoding("utf-8"); String name =request.getParameter("name"); //get請求處理亂碼 name = new String(name.getBytes("iso8859-1"),"utf-8"); System.out.println(name); // 因為write里面必須是“ 並且json里面也必須是" ,所以需要轉義” //解決亂碼 response.setContentType("text/html;charset=utf-8"); response.getWriter().write("{\"str\":\"你好\"}"); }
七、字符串與對象的轉換:
客戶端提交過來的數據一般都是json字符串,有了更好地進行操作(面向對象的方式),所以我們一般都會想辦法將json字符串轉換為json對象。
JSON.parse( ) 將字符串轉為對象
JSON.stringify( ) 將對象({ } [ ])轉為字符串
八、有關JSON的其他操作:
JSON是JS的一個子集,我們可以遍歷其,當然也可以對其進行數據的操作:
增(加)用add;
刪(除)用delete;
(修)改用update;
查(看)用for..in循環進行遍歷