json 应用实例

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3.   <head>  
  4.       
  5.     <title>JSON学习</title>  
  6.     <meta http-equiv="pragma" content="no-cache">  
  7.     <meta http-equiv="cache-control" content="no-cache">  
  8.     <meta http-equiv="expires" content="0">      
  9.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  10.     <meta http-equiv="description" content="This is my page">  
  11.     <script type="text/javascript" src="js/json.js"></script>  
  12.   </head>  
  13.     
  14.   <script language="javascript">  
  15.     var xmlHttp;  
  16.     function createXMLHttpRequest() {    
  17.         if (window.ActiveXObject) {    
  18.             xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    
  19.         }     
  20.         else if (window.XMLHttpRequest) {    
  21.             xmlHttp = new XMLHttpRequest();    
  22.         }    
  23.     }  
  24.     function doJSON(){  
  25.         var car = getCarObject();  
  26.         //将JS对象转化成JSON格式的Text  
  27.         var carAsJSON = JSON.stringify(car);  
  28.         alert(carAsJSON);  
  29.         var url = "JsonTest1?timeStamp="+new Date().getTime();  
  30.         createXMLHttpRequest();  
  31.         xmlHttp.open("POST", url, true);  
  32.         xmlHttp.onreadystatechange = handleStateChange;  
  33.         xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
  34.         xmlHttp.send(carAsJSON);  
  35.     }  
  36.     //Ajax的回调方法  
  37.     function handleStateChange(){  
  38.         if(xmlHttp.readyState == 4){  
  39.             if(xmlHttp.status == 200){  
  40.                 parseResults();  
  41.             }  
  42.         }  
  43.     }  
  44.     //具体的回调作动  
  45.     function parseResults(){  
  46.         var responseDiv = document.getElementById("serverResponse");  
  47.         if(responseDiv.hasChildNodes()){  
  48.             responseDiv.removeChild(responseDiv.childNodes[0]);  
  49.         }  
  50.         //xmlHttp.responseText是servlet中返回回来的JSON格式的数据,将它创建成一个js的node对象放到DIV中  
  51.         var responseText = document.createTextNode(xmlHttp.responseText);  
  52.         responseDiv.appendChild(responseText);  
  53.         //将json格式的Text转化成JSON对象:用eval(‘(‘+response+‘)‘)  
  54.         var resultJson = eval(‘(‘+xmlHttp.responseText+‘)‘);  
  55.         alert(resultJson);  
  56.         alert(resultJson.make);  
  57.         alert(resultJson.model);  
  58.         alert(resultJson.year);  
  59.         alert(resultJson.color);  
  60.     }  
  61.     //JS中的一个对象  
  62.     function Car(make,model,year,color){  
  63.         this.make = make;  
  64.         this.model = model;  
  65.         this.year = year;  
  66.         this.color = color;  
  67.     }  
  68.     //构成对象并返回  
  69.     function getCarObject(){  
  70.         return new Car("Dodge", "Coronet R/T", 1968, "yellow");  
  71.     }  
  72.   </script>  
  73.     
  74.   <body>  
  75.     <form action="#">    
  76.         <input type="button" value="Click here to send JSON data to the server" onclick="doJSON();"/>    
  77.     </form>  
  78.     <h2>Server Response:</h2>  
  79.     <div id="serverResponse">  
  80.           
  81.     </div>  
  82.   </body>  
  83. </html>  

 在我的servlet中实现如下:

Java代码  
  1. public class JsonTest1 extends HttpServlet {  
  2.   
  3.     /** 
  4.      *  
  5.      */  
  6.     private static final long serialVersionUID = 306348969081510518L;  
  7.   
  8.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  9.             throws ServletException, IOException {  
  10.         this.doPost(request, response);  
  11.     }  
  12.   
  13.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  14.             throws ServletException, IOException {  
  15.         String json = readJSONStringFromRequestBody(request);  
  16.         System.out.println("json = " + json);  
  17.                 //将request中接收的字符串转化成json对java对象  
  18.         JSONObject jsonObject = JSONObject.fromObject(json);  
  19.         System.out.println("jsonObject = " + jsonObject.toString());  
  20.         System.out.println(jsonObject.getInt("year"));  
  21.         System.out.println(jsonObject.getString("make"));  
  22.         System.out.println(jsonObject.getString("model"));  
  23.         System.out.println(jsonObject.getString("color"));  
  24.         //设置返回的格式是text  
  25.         response.setContentType("text/plain");  
  26.         response.getWriter().print(jsonObject);  
  27.     }  
  28.   
  29.     private String readJSONStringFromRequestBody(HttpServletRequest request) {  
  30.         StringBuffer json = new StringBuffer();  
  31.         String line = null;  
  32.         try {  
  33.             BufferedReader bufferRead = request.getReader();  
  34.             while ((line = bufferRead.readLine()) != null) {  
  35.                 System.out.println("line = " + line);  
  36.                 json.append(line);  
  37.             }  
  38.         } catch (Exception e) {  
  39.             e.printStackTrace();  
  40.         }  
  41.         return json.toString();  
  42.     }  
  43. }  

 servlet的配置如下:

Xml代码  
  1. <servlet>  
  2.     <servlet-name>JsonTest1</servlet-name>  
  3.     <servlet-class>com.mengya.servlet.JsonTest1</servlet-class>  
  4.   </servlet>  
  5.   
  6.   <servlet-mapping>  
  7.     <servlet-name>JsonTest1</servlet-name>  
  8.     <url-pattern>/JsonTest1</url-pattern>  
  9.   </servlet-mapping>  

 相于java对象与json之类的转化的一些测试如下(跟上面的实例无关):

Java代码  
  1. public class JsonBean1 {  
  2.     private String col;  
  3.   
  4.     private String row;  
  5.   
  6.     private String value;  
  7.   
  8.     public String getCol() {  
  9.         return col;  
  10.     }  
  11.   
  12.     public void setCol(String col) {  
  13.         this.col = col;  
  14.     }  
  15.   
  16.     public String getRow() {  
  17.         return row;  
  18.     }  
  19.   
  20.     public void setRow(String row) {  
  21.         this.row = row;  
  22.     }  
  23.   
  24.     public String getValue() {  
  25.         return value;  
  26.     }  
  27.   
  28.     public void setValue(String value) {  
  29.         this.value = value;  
  30.     }  
  31. }  

 

Java代码  
  1. /** 
  2.  *  
  3.  * @author 张明学 
  4.  *  
  5.  */  
  6. public class JsonBanTest {  
  7.   
  8.     /** 
  9.      * @param args 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         boolean[] boolArray = new boolean[] { true, false, true };  
  13.         JSONArray jsonArray1 = JSONArray.fromObject(boolArray);  
  14.         System.out.println(jsonArray1);  
  15.   
  16.         List list = new ArrayList();  
  17.         list.add("first");  
  18.         list.add("second");  
  19.         JSONArray jsonArray2 = JSONArray.fromObject(list);  
  20.         System.out.println(jsonArray2);  
  21.   
  22.         JSONArray jsonArray3 = JSONArray.fromObject("[‘json‘,‘is‘,‘easy‘]");  
  23.         System.out.println(jsonArray3);  
  24.   
  25.         Map map = new HashedMap();  
  26.         map.put("name", "json");  
  27.         map.put("bool", Boolean.TRUE);  
  28.         map.put("int", new Integer(1));  
  29.         map.put("arr", new String[] { "a", "b" });  
  30.         map.put("func", "function(i){return this.arr[i]}");  
  31.         JSONObject json = JSONObject.fromObject(map);  
  32.         System.out.println(json);  
  33.           
  34.         JsonBean1 jb = new JsonBean1();  
  35.         jb.setCol("col1");  
  36.         jb.setRow("row1");  
  37.         jb.setValue("123");  
  38.         JSONObject ja = JSONObject.fromObject(jb);  
  39.         System.out.println(ja.toString());  
  40.           
  41.         List list2 = new ArrayList();  
  42.         JsonBean1 jb2 = new JsonBean1();  
  43.         jb2.setCol("col1");  
  44.         jb2.setRow("row1");  
  45.         jb2.setValue("123");  
  46.         list2.add(jb);  
  47.         list2.add(jb2);  
  48.         JSONArray jsonArray = JSONArray.fromObject(list2);  
  49.         System.out.println(jsonArray.toString());  
  50.           
  51.         String jsonStr = "{name=\"json\",bool:true,int:1,double:2.2,func:function(a){ return a; },array:[1,2]}";  
  52.         JSONObject jsonObject = JSONObject.fromObject(jsonStr);  
  53.         System.out.println(jsonObject);  
  54.         System.out.println(jsonObject.get("name"));  
  55.         System.out.println(jsonObject.get("bool"));  
  56.         System.out.println(jsonObject.get("int"));  
  57.         System.out.println(jsonObject.get("double"));  
  58.         System.out.println(jsonObject.get("func"));  
  59.         System.out.println(jsonObject.get("array"));  
  60.     }  
  61.       
  62. }  

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。