一、
JSON(JavaScr ipt ObjectNotatio n)是一种轻量级的数据交换格式。易于人阅读和编写。同时,也易于机器解析和生成。
二、JSON数据格式解析:
和XML一样,J SON也是基于存文本的数据格式。您可以用JSO N传输一个简单的Stri ng、Number、Boolean,也可以传输一个数组或者一个复杂的Obj ect对象。例如:
1、用JSON表示一个简单St ring “abc”,其格式为:”abc”。除了字符“,\,/ 和一些控制符(\b,\n,\t等)需要编码外,其他Unico de字符可以直接输出。
2、用JSON表示一个数组对象,使用“[ ]“包含所有元素,每个元素用逗号分隔,元素可以使任意的value,例如,一下数组包含了一个Stri ng、Number、Boolean、和一个null:
[“abc”,123,false,null]。
3、Object对象在JSON中用“{ }“包含一系列无序的Key-Value键值对表示,实际上此处的O bject相当于Java中的Map。注意Key只能用Strin g表示。例如:一个Addre ss对象包含如下Key-Value:{“city”:”beijing”,”street”:”chaoyan g”,”postcod e”:100025}。三、JAVASCR IPT处理J SON数据
Functio n demo(){
var v={“name”:”SMITH”,”address”: {“city”:”beijing”,”street”:”chaoyan g”,”postcod e”:100025}}; documen t.write(v.name);
documen t.write(v.address.city);
}
四:JSON和XM L的比较
XML和JSO N都是用结构化方法来标记数据,下面来做一个简单的比较。
<?xml version=”1.0” encodin g=”utf-8”?>
<country>
<name>中国</name>
<provinc e>
<name>黑龙江</name>
<citys>
<city>哈尔滨</city>
<city>大庆</city>
</citys>
</provinc e>
用JSON表示如下:
{
name:”中国”,js获取json的key和value
provinc e:[
{
Name:”黑龙江”,citys:{“哈尔滨”,”大庆”}
}
]
}
XML比JSO N更有可读性。不过,我们读起来费解的语言,恰恰是适合机器阅读的。编写的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,J SON就是有用数据,而XML却包含很多重复的标记字符。
五、下面列举两个对象:JSONArr ay和JSO NObjec t
在写有关于JS ON的程序时首先要加入六个JAR包:commons-beanuti ls-1.7.0.jar、commons-collect ions.jar、commons-lang-2.2.jar、ezmorph-1.0.4.jar、json-lib-2.1-jdk15.jar、xom-1.1d2.jar
(1)JSONArr ay
例子:
List list = new ArrayLi st();
list.add("a");
list.add("b");
JSONArr ay jso = JSONArr ay.fromObj ect(list);
System.out.println(list);
输出的结果是:[“a”,”b”] 。
(2)JSONObj ect
例子:
Map map = new HashMap();
map.put( "int", new Integer(1) );
map.put( "arr", new String[]{"a","b"} );
map.put( "func", "functio n(i){ returnthis.arr; }" );
JSONObj ect json = JSONObj ect.fromObj ect( map );
System.out.println( json );
输出的结果是:{"arr":["a","b"],"int":1,"func":functio n(i){ returnthis.arr; }}
(3)JSONObj ect to XML
例子:
JSONObj ect json = JSONObj ect.fromObj ect("{\"name\":\"json\",\"bool\":true,\"int\":1}");
XMLSeri alizer xmlSeri alizer = new XMLSeri alizer();
Stringxml = xmlSeri alizer.write(json);
System.out.println(xml);
XML to JSONObj ect
例子:
Stringxmls = "<?xml version='1.0' encodin g='UTF-8'?><o><int type='number'>1</int>" + "<name type='string'>json</name></o>";
XMLSeri alizer xmlSeri alizer = new XMLSeri alizer();
JSON json = xmlSeri alizer.read(xmls); System.out.println( Strin g(2) );
六、下面列举AJA X和JSON的例子
1、环境strut s、hiberna te、JSON、AJAX
2、首先,加载strut s和hibe rnate框架,然后再把JSO N的JAR包放到lib
下。
创建一个Act ion:
Action的内容如下:
PrintWr iter out = responWrit er();
JSONObj ect obj = new JSONObj ect();
JSONArr ay js = new JSONArr ay();
//这里的数据封装是从数据库查询来的
MesDaomd = new MesDao();
List list = md.findMes s();
for(int i=0;i<list.size();i++){
JSONObj ect objtemp = new JSONObj ect();
TMessag e tm = (TMessag e) (i);
objtemp.put("id", tm.getId());
objtemp.put("name", tm.getName());
js.add(objtemp);
}
obj.put("js",js);
out.Strin g());
然后,创建一个JSP页面:
其内容如下:
<scripttype="text/javascr ipt" src="prototy pe1.4.js"></script> <scripttype="text/javascr ipt" src="toolpro.js"></script>
<scripttype="text/javascr ipt">
functio n demo(){
new Ajax.Updater("content","test.do");
}
</script>
<a href='javascr ipt:getcomp lex()'>获取数据</a>
<div id="content">
正在获取内容...
</div>
然后创建too lpro.js
toolpro.js的内容如下:
functio n getcomp lex(){
var url = 'test.do';
var ajax = new Ajax.Request(url,
{method:'post',Complet e:showcom plex});
}
functio n showcom plex(dataRes ponse)
{
var data = eval('(' + dataRes ponse.respons eText+ ')'); var str='';
for(var i=0;i<data.js.length;i++)
{
str+='<ul>';
str+='<li>'+data.js.id+'</li>';
str+='<li>'+data.js.name+'</li>';
str+='</ul>';
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论