JSON

Servlet和JSON传送与接收

字号+ 作者:H5之家 来源:H5之家 2016-05-31 11:00 我要评论( )

在 JSON 中我们已经介绍过其基本格式,与XML相同,JSON只是一个文字格式,只要客户端与伺服端可以剖析它,就可以利用它作为传送资料的格式,但它是JavaScript的

在 JSON 中我们已经介绍过其基本格式,与XML相同,JSON只是一个文字格式,只要客户端与伺服端可以剖析它,就可以利用它作为传送资料的格式,但它是JavaScript的核心特性之一,所以在JavaScript中使用JSON作为资料格式很方便,您还可以在 找到处理JSON的程式库,包括客户端JavaScript library与伺服端的library。 相较于XML,JSON在资料表示时更为简洁,例如一个表示帐户的资料,XML中可能如下表示:
<account>
<number>123456</number>
<name>Justin</name>
<balance>1000</balance>
</account> 而使用JSON可以这么表示:
var account = {
number : "123456",
name: "Justin",
balance: "1000"
}; 您可以下载 ,并将之加入至网页之中:
<script type="text/javascript" src="json.js"></script> json.js 中有JSON parser与JSON stringifier,例如它扩充了物件,增加了toJSONString()函式,您可以直接如下传回物件的JSON表示法:
function Account(number, name, balance) {
this.number = number;
this.name = name;
this.balance = balance;
} var account = new Account(123456, "Justin", 1000);
alert(account.toJSONString()); 您可以按下 执行范例 观看结果。 您可以把JSON表示法以POST发送至伺服端,例如: * HandleJSONEx-2.js var xmlHttp; function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); else if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } function prepareJSON() {
var number = document.getElementById("num").value;
var name = document.getElementById("name").value;
var balance = document.getElementById("bal").value; var account = new Object();
account.number = number;
account.name = name;
account.balance = balance; return account.toJSONString();
} function handleAccount() {
var json = prepareJSON();
var url = "JSONServlet?timeStamp" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("POST", url);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(json);
} function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById("response").innerHTML = xmlHttp.responseText; } 这个程式使用者输入的帐号资讯包装为物件,并使用JSON扩充的toJSONString()将之转换为JSON格式,之后POST至伺服端,伺服端可以至 JSON in Java 下载JSON伺服端的Parser,您可以撰写以下的程式: * JSONServlet.java package onlyfun.caterpillar; import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.*; public class JSONServlet
extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public JSONServlet() {
super();
} protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String json = readJSONString(request); JSONObject jsonObject = null;
String responseText = null;
try {
jsonObject = new JSONObject(json);
responseText = "帐号 " + jsonObject.getString("number") + " + jsonObject.getString("name") + " + jsonObject.getString("balance"); catch (JSONException e) {
e.printStackTrace(); response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
response.getWriter().print(responseText);
} private String readJSONString(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(e.toString()); return json.toString(); }
这个Servlet剖析JSON,并将资料取出后再传回文字回应。 如果将JSON字串传回给客户端浏览器,则可以使用eval()将之运算为一个JavaScript物件以进行操作。 json.jar下载?rev=4085&view=log

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 解决php中使用json

    解决php中使用json

    2016-05-31 12:03

  • js将json格式的对象拼接成复杂的url参数方法

    js将json格式的对象拼接成复杂的url参数方法

    2016-05-31 10:00

  • JS中JSON对象和String之间的互转及处理技巧

    JS中JSON对象和String之间的互转及处理技巧

    2016-05-30 17:02

  • json使用教程1

    json使用教程1

    2016-05-29 16:00

网友点评