首先,介绍一下JSON。JSON(JavaScript Obect Notation)是一种轻量级的数据交换格式,易于人阅读和书写,也易于机器解析和生成。JSON建构与两种结构:
- “名称/值”对的集合,在不同的语言中,它被理解为对象,记录,结构,字典,哈希表,有键列表或者关联数组。
- 值的有序列表,大部分语言中,它被理解为数组
JSON具有以下这些形式:
对象是一个无序的,“名称/值”对的集合。一个对象以“{”始,“}”结束。每个名称后面跟一个“:”,“名称/值”对之间用“,”隔开。
数组是值的有序集合,一个数组以“[”开始,“]”结束,值之间用“,”隔开。
值可以是用双引号括起来的字符串,数值,true,false, null,对象或者数组。这些结构可以嵌套。
字符串是由双引号包围的任意数量的Unicode字符的集合,使用反斜线转义。一个字符即一个单独的字符串。
数值也与C或Java的数值非常类似,除去未曾使用的八进制与十六进制,除去一些编码细节。
getJSON(url,[data],[callback])是JQuery获取JSON数据格式的方法,其中“url”表示请求的地址,可以是生成JSON数据的页面或者JSON数据保存的文件,可选项data表示发送到服务器端的数据,其格式是“key/value”的键值对,另一个可选项“callback”表示加载成功时执行的回调函数。下面是在一个页面中用Ajax获取另一个页面生成的JSON数据的例子:
$.getJSON(
"jsonGene.jsp",
function(data){
$.each(data, function(index, values){
$.each(values, function(key, value){
$("#page").append(value + "<br>");
});
});
});
生成JSON数据的JSP页面为:
<jsp:directive.page contentType="text/html; charset=utf-8"/>
<%@ page import="handle.DBlogic"%>
<%@ page import="handle.Seed"%>
<%@ page import="java.util.*"%>
<%
DBlogic dblogic = new DBlogic();
ArrayList<Seed> seedList = dblogic.getdata();
String str = "[";
int i;
for(i=0; i<seedList.size()-1; i++){
Seed seed = seedList.get(i);
String temp = "{";
temp += "\"patternTypes\": " + '"' + seed.getPatternTypes() + '"' + ",";
temp += "\"pattern1\": " + '"' + seed.getPattern1() + '"' + ",";
temp += "\"label\": " + '"' + seed.getLabel()+ '"' + ",";
temp += "\"value\": " + '"' + seed.getValue() + '"' + ",";
temp += "\"anotherPattern1\": " + '"' + seed.getAnotherPattern1() + '"';
temp += "},";
str += temp;
}
Seed seed = seedList.get(i);
String temp = "{";
temp += "\"patternTypes\": " + '"' + seed.getPatternTypes() + '"' + ",";
temp += "\"pattern1\": " + '"' + seed.getPattern1() + '"' + ",";
temp += "\"label\": " + '"' + seed.getLabel()+ '"' + ",";
temp += "\"value\": " + '"' + seed.getValue() + '"' + ",";
temp += "\"anotherPattern1\": " + '"' + seed.getAnotherPattern1() + '"';
temp += "}";
str += temp;
str += "]";
out.print(str);
%>
生成的JSON对象为: