见红皮笔记
=====================================================================================================================================================================================================================================================================
一、 JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时,也易于机器解析和生成。 二、JSON数据格式解析: 和XML一样,JSON也是基于存文本的数据格式。您可以用JSON传输一个简单的String、Number、Boolean,也可以传输一个数组或者一个复杂的Object对象。 例如: 1、用JSON表示一个简单String“abc”,其格式为:”abc”。除了字符“,,/和一些控制符(b,n,t等)需要编码外,其他Unicode字符可以直接输出。 2、用JSON表示一个数组对象,使用“[]“包含所有元素,每个元素用逗号分隔,元素可以使任意的value,例如,一下数组包含了一个String、Number、Boolean、和一个null: [“abc”,123,false,null]。 3、Object对象在JSON中用“{}“包含一系列无序的Key-Value键值对表示,实际上此处的Object相当于Java中的Map。注意Key只能用String表示。例如:一个Address对象包含如下Key-Value:{“city”:”beijing”,”street”:”chaoyang”,”postcode”:100025}。 三、JAVASCRIPT处理JSON数据 Functiondemo(){ varv={“name”:”SMITH”,”address”:{“city”:”beijing”,”postcode”:100025}}; document.write(v.name); document.write(v.address.city); } 四:JSON和XML的比较 XML和JSON都是用结构化方法来标记数据,下面来做一个简单的比较。 <?xmlversion=”1.0”encoding=”utf-8”?> < country> < name>中国</name> < province> < name>黑龙江</name> < citys> < city>哈尔滨</city> < city>大庆</city> < /citys> < /province> < /country> 用JSON表示如下: { name:”中国”, province:[ { Name:”黑龙江”,citys:{“哈尔滨”,”大庆”} } ] } XML比JSON更有可读性。不过,我们读起来费解的语言,恰恰是适合机器阅读的。编写的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是有用数据,而XML却包含很多重复的标记字符。 五、下面列举两个对象:JSONArray和JSONObject 在写有关于JSON的程序时首先要加入六个JAR包:commons-beanutils-1.7.0.jar、commons-collections.jar、commons-lang-2.2.jar、ezmorph-1.0.4.jar、json-lib-2.1-jdk15.jar、xom-1.1d2.jar (1)JSONArray 例子: Listlist=newArrayList(); list.add("a"); list.add("b"); JSONArrayjso=JSONArray.fromObject(list); System.out.println(list); 输出的结果是:[“a”,”b”]。 (2)JSONObject 例子: Mapmap=newHashMap(); map.put("int",newInteger(1)); map.put("arr",newString[]{"a","b"}); map.put("func","function(i){returnthis.arr;}"); JSONObjectjson=JSONObject.fromObject(map); System.out.println(json); 输出的结果是:{"arr":["a","b"],"int":1,"func":function(i){returnthis.arr;}} (3)JSONObjecttoXML 例子: JSONObjectjson=JSONObject.fromObject("{"name":"json","bool":true,"int":1}"); XMLSerializerxmlSerializer=newXMLSerializer(); Stringxml=xmlSerializer.write(json); System.out.println(xml); XMLtoJSONObject 例子: Stringxmls="<?xmlversion='1.0'encoding='UTF-8'?><o><inttype='number'>1</int>"+"<nametype='string'>json</name></o>"; XMLSerializerxmlSerializer=newXMLSerializer(); JSONjson=xmlSerializer.read(xmls);System.out.println(json.toString(2)); 六、下面列举AJAX和JSON的例子 1、环境struts、hibernate、JSON、AJAX 2、首先,加载struts和hibernate框架,然后再把JSON的JAR包放到lib下。 创建一个Action: Action的内容如下: PrintWriterout=response.getWriter(); JSONObjectobj=newJSONObject(); JSONArrayjs=newJSONArray(); //这里的数据封装是从数据库查询来的 MesDaomd=newMesDao(); Listlist=md.findMess(); for(inti=0;i<list.size();i++){ JSONObjectobjtemp=newJSONObject(); TMessagetm=(TMessage)list.get(i); objtemp.put("id",tm.getId()); objtemp.put("name",tm.getName()); js.add(objtemp); } obj.put("js",js); out.print(obj.toString()); 然后,创建一个JSP页面: 其内容如下: <scripttype="text/javascript"src="prototype1.4.js"></script> <scripttype="text/javascript"src="toolpro.js"></script> <scripttype="text/javascript"> functiondemo(){ newAjax.Updater("content","test.do"); } < /script> < ahref='javascript:getcomplex()'>获取数据</a> < divid="content"> 正在获取内容... < /div> 然后创建toolpro.js toolpro.js的内容如下: functiongetcomplex(){ varurl='test.do'; varajax=newAjax.Request(url, {method:'post',Complete:showcomplex}); } functionshowcomplex(dataResponse) { vardata=eval('('+dataResponse.responseText+')'); varstr=''; for(vari=0;i<data.js.length;i++) { str+='<ul>'; str+='<li>'+data.js.id+'</li>'; str+='<li>'+data.js.name+'</li>'; str+='</ul>'; } document.getElementById("content").innerHTML=str; }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|