一、JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时,也易于机器解析和生成。二、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数据Function demo(){var v={“name”:”SMITH”,”address”: {“city”:”beijing”,”street”:”chaoyang”,”postcode”:100025}};document.write(v.name);document.write(v.address.city);}四:JSON和XML的比较XML和JSON都是用结构化方法来标记数据,下面来做一个简单的比较。<?xml version=”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 例子: List list = new ArrayList(); list.add("a"); list.add("b"); JSONArray jso = JSONArray.fromObject(list); System.out.println(list); 输出的结果是:[“a”,”b”] 。(2)JSONObject 例子: Map map = new HashMap(); map.put( "int", new Integer(1) ); map.put( "arr", new String[]{"a","b"} ); map.put( "func", "function(i){ return this.arr; }" ); JSONObject json = JSONObject.fromObject( map ); System.out.println( json ); 输出的结果是:{"arr":["a","b"],"int":1,"func":function(i){ return this.arr; }}(3)JSONObject to XML 例子: JSONObject json = JSONObject.fromObject("{\"name\":\"json\",\"bool\":true,\"int\":1}"); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json); System.out.println(xml); XML to JSONObject 例子: String xmls = "<?xml version='1.0' encoding='UTF-8'?><o><int type='number'>1</int>" + "<name type='string'>json</name></o>"; XMLSerializer xmlSerializer = new XMLSerializer(); JSON json = xmlSerializer.read(xmls); System.out.println( json.toString(2) ); 六、下面列举AJAX和JSON的例子 1、环境struts、hibernate、JSON、AJAX 2、首先,加载struts和hibernate框架,然后再把JSON的JAR包放到lib下。创建一个Action: Action的内容如下: PrintWriter out = response.getWriter(); JSONObject obj = new JSONObject(); JSONArray js = new JSONArray(); //这里的数据封装是从数据库查询来的 MesDao md = new MesDao(); List list = md.findMess(); for(int i=0;i<list.size();i++){ JSONObject objtemp = new JSONObject(); TMessage tm = (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页面: 其内容如下: <script type="text/javascript" src="prototype1.4.js"></script> <script type="text/javascript" src="toolpro.js"></script> <script type="text/javascript"> function demo(){ new Ajax.Updater("content","test.do"); }</script><a href='javascript:getcomplex()'>获取数据</a><div id="content"> 正在获取内容...</div>然后创建toolpro.jstoolpro.js的内容如下:function getcomplex(){var url = 'test.do'; var ajax = new Ajax.Request(url, {method:'post',Complete:showcomplex}); }function showcomplex(dataResponse) {var data = eval('(' + dataResponse.responseText + ')');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>';}document.getElementById("content").innerHTML=str;}
转载于:https://www.cnblogs.com/Gatsby/archive/2013/05/23/3095793.html