JSON語法是一種用於傳輸和生成數據的協定,很類似於C家族的語言,所以很容易被C家族的語言所解析。
對象:對象包含再{}之間
屬性:采用Key-Value對來表示。屬性之間使用逗號分開。 string : value
數組:數組存放再[]之間 [ elements ]
元素:元素之間用逗號分開
值:值可以是字符串,數字,對象,數組,true,false,null
json的官方文檔:http://www.json.org/json-zh.html
JSON的優點:
輕量級的數據交換格式
人們讀寫更加容易
易於機器的解析和生成
能夠通過JavaScript中eval()函數解析JSON
JSON支持多語言。包括:ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!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>ajax處理json數據演示示例</title> <script type="text/javascript"> function ask4(){ //1創建ajax對象 var xhr=null; if(window.XMLHttpRequest){//高版本IE,火狐等 xhr = new XMLHttpRequest(); }else{//低版本IE xhr = new ActiveXObject("Microft.XMLHttp"); } //2請求地址 var url = "<c:url value='/JsonServlet3'/>"; //post方式,請求參數在 send()方法的實參 //3設置訪問方式 xhr.open("POST", url, true); //4設置訪問成功返回后的操作 xhr.onreadystatechange = function(){ if(xhr.readyState==4){ if(xhr.status==200){ var txt = xhr.responseText; //alert(txt); ///////////解析后台返回的json串///////////// //js中的eval()方法的功能: 校驗參數文本串符合js中哪一種數據類型,並把其轉換成對應類型的對象---json var users = eval( "("+txt+")" ); //得到一個json對象 for(var i=0; i<users.length; i++){ alert(users[i].id+","+users[i].name+","+users[i].age) } } } }; xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded" ); //5發送 xhr.send(null); } </script> </head> <body> <input type="button" onclick="ask4();" value="ajax請求后台數據(后台--用fastjson工具封裝json的方式)"> <br/> </body> </html>
package cn.hncu.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import cn.hncu.domain.User; @WebServlet("/JsonServlet3") public class JsonServlet3 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //按理應該調用service、dao層並從數據庫中把數據讀取出來,這里模擬了... List<User> users = new ArrayList<User>(); users.add( new User("U001","Jack",22)); users.add( new User("U010","張三",12)); users.add( new User("U002","Rose",23)); request.setAttribute("users", users); //利用fastjson的工具為我們把后台的List<User>類型的數據封裝成json格式串,發送前端 //json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}] //轉List-json※※※ String json = JSON.toJSONString(users); System.out.println(json); //轉Map-json Map<String, Object> map = new HashMap<String, Object>(); map.put("addr", "湖南"); map.put("id", "P001"); map.put("sex", "男"); map.put("age", 20); map.put("friend", new User("U001","Jack",22)); String str = JSON.toJSONString(map); System.out.println(str); //發給前端 response.setCharacterEncoding("utf-8"); response.getWriter().print(json); } }
//利用apache的工具為我們把后台的List<User>類型的數據封裝成json格式串,發送前端 //json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}] //轉List-json JSONArray jsonObj=JSONArray.fromObject(users);//轉換List的方法 String json = jsonObj.toString(); System.out.println(json); //轉Map-json Map<String, Object> map = new HashMap<String, Object>(); map.put("addr", "湖南"); map.put("id", "P001"); map.put("sex", "男"); map.put("age", 20); map.put("friend", new User("U001","Jack",22)); JSONObject obj = JSONObject.fromObject(map); System.out.println(obj.toString()); //發給前端 response.setCharacterEncoding("utf-8"); response.getWriter().print(json);
這里還可以采用apache中工具把數據封裝成json字符串,還可以在后台把我們的List<User>類型的數據手動封裝成json格式串,發送前端
//json串格式: [{name:"Jack",id:"U001",age:22},{...},{...}]
這里使用Json工具的時候要導包----->fastjson-1.1.17.jar----->json-lib-2.3-jdk15.jar