首先,介绍一下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数据的例子:
1 2 3 4 5 6 7 8 9 | <span style= "font-size:16px;" >$.getJSON( "jsonGene.jsp" , function (data){ $.each(data, function (index, values){ $.each(values, function (key, value){ $( "#page" ).append(value + "<br>" ); }); }); });</span> |
生成JSON数据的JSP页面为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <span style= "font-size:16px;" ><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); %></span> |
生成的JSON对象为: