|
通过JSON(JavaScript Object Notation)向服务器发送数据。它是一种轻量级的数据交换格式,使用了类似于C语言家族的习惯。
JSON具有以下这些形式:
a : 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。
b: 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
c: 值(value)可以是双引号括起来的字符串(string)、数值(number)、 ture、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
d: 字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
不多说了,关于JSON其实在 www.json.org 上讲得太好了!上面不但有每个JAVA的源文件,而且每个文件都有与之对应的JAVA DOC!还有不少实例!
我就选了json in java and json in javascript 二个链接 ,从这二个地方可以下到JSON的javascript包和Java包。
Javascript 包的应用如下:
首先创建一个符合json的对象,并通过XHP发送到sever
< script type = " text/javascript " src = " json.js " ></ script > < script type = " text/javascript " > var xmlHttp;function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject( " Microsoft.XMLHTTP " ); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } function doJSON() { var car = getCarObject(); // Use the JSON JavaScript library to stringify the Car object var carAsJSON = JSON.stringify(car); alert( " Car object as JSON:\n " + carAsJSON); var url = " JSONExample?timeStamp= " + new Date().getTime(); createXMLHttpRequest(); xmlHttp.open( " POST " , url, true ); xmlHttp.onreadystatechange = handleStateChange; xmlHttp.setRequestHeader( " Content-Type " , " application/x-www-form-urlencoded " ); xmlHttp.send(carAsJSON);} function handleStateChange() { if (xmlHttp.readyState == 4 ) { if (xmlHttp.status == 200 ) { parseResults(); } } } function parseResults() { var responseDiv = document.getElementById( " serverResponse " ); if (responseDiv.hasChildNodes()) { responseDiv.removeChild(responseDiv.childNodes[ 0 ]); } var responseText = document.createTextNode(xmlHttp.responseText); responseDiv.appendChild(responseText);} function getCarObject() { return new Car( " Dodge " , " Coronet R/T " , 1968 , " yellow " );} function Car(make, model, year, color) { this .make = make; this .model = model; this .year = year; this .color = color;} </ script > 那个json.js就是我们下下来的包啦!
我们再看看在server端的处理
package ajaxbook.chap3; import java.io. * ; import java.net. * ; import java.text.ParseException; import javax.servlet. * ; import javax.servlet.http. * ; import org.json.JSONObject; public class JSONExample extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String json = readJSONStringFromRequestBody(request); // Use the JSON-Java binding library to create a JSON object in Java JSONObject jsonObject = null ; try { jsonObject = new JSONObject(json); } catch (ParseException pe) { System.out.println( " ParseException: " + pe.toString()); } String responseText = " You have a " + jsonObject.getInt( " year " ) + " " + jsonObject.getString( " make " ) + " " + jsonObject.getString( " model " ) + " " + " that is " + jsonObject.getString( " color " ) + " in color. " ; response.setContentType( " text/xml " ); response.getWriter().print(responseText); } private String readJSONStringFromRequestBody(HttpServletRequest request) { StringBuffer json = new StringBuffer(); String line = null ; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null ) { json.append(line); } } catch (Exception e) { System.out.println( " Error reading JSON string: " + e.toString()); } return json.toString(); } }
org.json.JSONObject是从JSON.ORG上下下来的JAVA包!它上面也有JSONObject的JAVA DOC.
|
|