弄asp和php傳輸json格式都沒有太大問題,但是昨天弄jsp的就讓我很鬱悶,網上下了jar文件,引入,但老是出問題。今天自己寫了個類,與大家分享。
1.新建類json
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package JSON;
/**
*
* @author ZMR
*/
public class json {
private StringBuilder sb; //構建字符串
public json(StringBuilder sbs)
{
sb=sbs;
}
public void BeginWriteObject()
{
sb.append("{");
}
public void EndWriteObject()
{
sb.setCharAt(sb.lastIndexOf(","), '}');
}
public void WriteProperties(String name)
{
sb.append("'"+name+"'"+":");
}
public void WriteValue(Object value)
{
sb.append("'"+value+"'"+",");
}
public void BeginWriteArray()
{
sb.append("[");
}
public void EndWrieArray()
{
int index=sb.lastIndexOf(",");
sb.replace(sb.lastIndexOf(","),index+1,"],");
}
public void WriteSeparated()
{
sb.append(",");
}
}
2.調用 ajax.jsp,處理數據頁
<%--
Document : ajax
Created on : 2010-12-25, 14:35:02
Author : ZMR
--%>
<%@page contentType="text/plain; charset=UTF-8"
language="java"
import="java.io.*,java.net.*,java.util.*"
buffer="8kb"
session="false"
autoFlush="true"
%>
<%@page import="java.io.IOException"%>
<%@page import="java.io.PrintWriter"%>
<%@page import="JSON.json"%>
<%
StringBuilder sb=new StringBuilder();
json jquery=new json(sb);
jquery.BeginWriteObject();
jquery.WriteProperties("Name");
jquery.WriteValue("張明瑞");
jquery.WriteProperties("rows");
jquery.BeginWriteArray();
for(int i=0; i<3; i++)
{
jquery.BeginWriteObject();
jquery.WriteProperties("key");
jquery.WriteValue(i);
jquery.WriteProperties("value");
jquery.WriteValue(i*3);
jquery.EndWriteObject();
jquery.WriteSeparated();
}
jquery.EndWrieArray();
jquery.EndWriteObject();
String d="{Name:'Truly', rows:[{key:'1',value:'0'},{key:'6101',value:'北京市'},{key:'6102',value:'天津市'}]}";
PrintWriter pw = response.getWriter();
pw.write(sb.toString());
%>
3.調用index.jsp
<%--
Document : index
Created on : 2010-12-25, 10:47:26
Author : ZMR
--%>
<%@page contentType="text/html" 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>JSP Page</title>
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$.ajax({
url: "ajax.jsp",
// dataType:'json', //很重要!!!. 預期服務器返回的數據類型
error:function(data){
alert("error");
},
success:function(data){
// alert(d.account.toString());
var json= eval('('+data+')');
var html="<h1>"+json.Name+"</h1>";
var rows=json.rows;
for(var i=0; i<rows.length; i++){
html+="鍵值:"+rows[i].key+"值:"+rows[i].value+"<br/>";
}
$("body").append(html);
}
});
});
</script>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
哈哈~~~OK!
小體會:有時候網上的多種方法反而把問題複雜化了,瞭解了json數據的格式,自己也可以寫了。