??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美激情国内偷拍,伊人久久精品,久久91在线http://www.aygfsteel.com/WshmAndLily/category/26041.htmlzh-cnThu, 20 Sep 2007 14:10:32 GMTThu, 20 Sep 2007 14:10:32 GMT60JSON?/title><link>http://www.aygfsteel.com/WshmAndLily/articles/146937.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Thu, 20 Sep 2007 13:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/WshmAndLily/articles/146937.html</guid><wfw:comment>http://www.aygfsteel.com/WshmAndLily/comments/146937.html</wfw:comment><comments>http://www.aygfsteel.com/WshmAndLily/articles/146937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/WshmAndLily/comments/commentRss/146937.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/WshmAndLily/services/trackbacks/146937.html</trackback:ping><description><![CDATA[<span id="wmqeeuq" class="h1b"><a href="/Files/WshmAndLily/json_addressbook.zip"><span id="wmqeeuq" class="h1b">JSON?/span></a></span><br /> <br /> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td height="64">旉Q?007-03-27<br /> 作者:(x)<a >Daniel Rubio</a><br /> 览ơ数Q?<script language="JavaScript" src="/beadevcount.jsp?d_id=499552" type="text/JavaScript"></script>7706 <br /> 本文关键字:(x)<a >JSON</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&keywords=JavaScript Object Notation">JavaScript Object Notation</a>, <a >JavaScript</a>, <a >XML</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&keywords=Dev Toolbox">Dev Toolbox</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&keywords=WebLogic Server">WebLogic Server</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&keywords=Daniel Rubio">Daniel Rubio</a></td> <td> <table class="box_content" cellspacing="0" cellpadding="0" border="0"> <tbody> <tr> <td><span id="wmqeeuq" class="h2b">文章工具</span><br /> <img height="10" alt="推荐l朋? src="http://dev2dev.bea.com.cn/images/letter001.gif" width="19" align="absMiddle" /> <a href="javascript:sendmail()">推荐l朋?/a><br /> <img height="18" alt="打印文章" src="http://dev2dev.bea.com.cn/images/print001.gif" width="19" align="absMiddle" /> <a href="javascript:window.print()">打印文章</a></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <!-- 提取技术文?--> <div id="wmqeeuq" class="beas"><img height="1" alt="" src="http://dev2dev.bea.com.cn/images/dot6B6B6B.gif" width="100%" /></div> <h3>摘要</h3> <p>  XML——这U用于表C客L(fng)与服务器间数据交换有效负载的格式Q几乎已l成了Web services的同义词。然而,׃Ajax和REST技术的出现影响了应用程序架构,q迫使h们开始寻求`XML的替代品Q如QJavaScript Object NotationQJSONQ?/p> <p>  JSON 作ؓ(f)一U更轅R更友好?Web services客户端的格式Q多采用览器的形式或访?REST风格 Web服务的Ajax应用E序的Ş式)引v?Web 服务供应商的注意?/p> <p>  本文阐qJSON在Web services设计中备受推崇的原因Q以?qing)它作?f)XML替代Ҏ(gu)的主要优势和局限性。文中还?x)深入探讨?x)随着相应的Web 服务客户端选择使用JSONQ如何才能便捷地在Java Web services中生成JSON输出?/p> <h3>XML的十字\? 览器和 Ajax</h3> <p>  XML设计原理已经发布了将q十q。时至今日,q种标记语言已经在广阔的软g应用领域中占据了dC。从Java?NET{主^C的配|和部v描述W到应用集成场景中更复杂的应用,XML与生俱来的语a无关性之在软g架构师心目中占据着独特的地位。但即便最著名的XML权威也不得不承认Q在某些环境中,XML的用已l超Z它自w能力的极限?/p> <p>  围绕Ajax原理构徏的那些Web应用E序最能说明XML的生存能力,从这一Ҏ(gu)看,一U新的有效负载格式的发展壮大也得益于XML。这U新的有效负载格式就是JavaScript Object Notation (JSON)。在探烦q种新的标记语言的复杂性之前,首先来分析一下在q种独特的设计Ş式中QXMLh哪些局限性?/p> <p>  Ajax建立了一个用于从q程Web services发送和接收数据的独立信道,从而允许WebE序执行信道外(out-of-bandQ客L(fng)/服务器调用。通俗地说QAjaxE序中的更新和导航序列在典型的客L(fng)/服务器环境之外完成,在后収ͼ即信道外Q接受到信息后,必须q行一ơ完整的屏幕h。更多背景信息,请参阅David Teare?<a >Ajax?/a>QDev2DevQ?/p> <p>  q些应用E序更新通常是通过REST风格QRESTfulQWeb services获得的,一旦被用户的浏览器接收刎ͼ需要整合到HTML面的M布局之中Q这正是XML发挥强大力量的场合。尽近q来Q脚本语a支持和插件支持已使大多数L览器的功能得到了强化,但许多编EQ务依焉于开展,其中之一是操纵或处理文本,q通常是用DOM实现的?/p> <p>  采用DOM的复杂性源于其Z函数的根Q这使得Ҏ(gu)据树(wi)的简单修Ҏ(gu)讉K都需要进行无数次Ҏ(gu)调用。此外,众所周知QDOM在各U浏览器中的实现l节不尽相同Q这一q程带来极为复杂的~程模式Q其跨浏览器兼容性出现问题的可能性极大。接下来的问题显而易见,那就是:(x)如何使一U标记语aL集成到HTML面中以满Ajax的要求?</p> <p>  问题的答案就是:(x)利用所有主浏览器中的一U通用lg——JavaScript引擎。XML需要用DOM之类的机制来讉K数据q将数据整合到布局之中Q采用这U方法,我们不再使用像XMLq样的格式来交付Ajax更新Q而是采用一U更为简单直观的方式Q采用JavaScript引擎自然匚w的格式——也是JSON?/p> <p>  既然已经明确了JSON与XML和Ajax之间的关p,下面进一步探讨JSON背后的技术细节?/p> <h3>JSON剖析Q优点和不</h3> <p>  对于JSONQ首先要明白JSON和XML一样也是一U简单文本格式。相对于XMLQ它更加易读、更便于肉眼(g)查。在语法的层面上QJSON与其他格式的区别是在于分隔数据的字符QJSON中的分隔W限于单引号、小括号、中括号、大括号、冒号和逗号。下图是一个JSON有效负蝲Q?/p> <pre class="code">{"addressbook": {"name": "Mary Lebow", "address": { "street": "5 Main Street" "city": "San Diego, CA", "zip": 91912, }, "phoneNumbers": [ "619 332-3452", "664 223-4667" ] } } </pre> <p>  上面的JSON有效负蝲用XML改写Q如下:(x)</p> <pre class="code"><addressbook> <name>Mary Lebow</name> <address> <street>5 Main Street</street> <city zip="91912"> San Diego, CA </city> <phoneNumbers> <phone>619 332-3452</phone> <phone>664 223-4667</phone> </phoneNumbers> </address> </addressbook> </pre> <p>  是不是很怼Q但它们q不相同。下面将详细阐述采用JSON句法的优点和不?/p> <h4>优点 </h4> <p>  乍看上去Q用JSON的数据分隔符的优点可能ƈ不那么明显,但存在一个根本性的~由Q它们简化了数据讉K。用这些数据分隔符Ӟ JavaScript引擎Ҏ(gu)据结构(如字W串、数l、对象)的内部表C恰好与q些W号相同?/p> <p>  q将开创一条比DOM技术更ZL(fng)数据讉K途径。下面列丑և个JavaScript代码片段来说明这一q程Q这些代码片D会(x)讉K先前的JSON代码片段中的信息Q?/p> <ul> <li>讉KJSON中的名称Q?addressbook.name <li>讉KJSON中的地址Q?addressbook.address.street <li>讉KJSON中的?sh)话L(fng)W一位:(x)addressbook.address.phoneNumbers[0] </li> </ul> <p>  如果(zhn)具备DOM~程l验Q就能很快地看出区别Q新手可以参?<a target="_blank">Document Object Model</a> 的这一外部资源Q这里提供了关于数据D的实例?/p> <p>  JSON的另一个优Ҏ(gu)它的非冗长性。在XML中,打开和关闭标记是必需的,q样才能满标记的依从性;而在JSON中,所有这些要求只需通过一个简单的括号卛_满。在包含有数以百计字D늚数据交换中,传统的XML标记会(x)廉数据交换旉。目前还没有正式的研I表明JSON比XML有更高的U上传输效率Qh们只是通过单的字节数比较发玎ͼ对于{效的JSON和XML有效负蝲Q前者L于后者。至于它们之间的差距有多大,特别是在新的XML压羃格式下它们的差距有多大,有待q一步的研究?/p> <p>  此外QJSON受到了擅长不同编E语a的开发h员的青睐。这是因为无论在<em>Haskell</em>中或 <em>Lisp</em>中,q是在更Z的C#和PHP中,开发都可以方便地生成JSONQ详?参考资料)?/p> <h4>不</h4> <p>  和许多好东西都具有两面性一PJSON的非冗长性也不例外,为此JSON丢失了XMLh的一些特性。命名空间允怸同上下文中的相同的信息段彼此混合Q然而,昄在JSON中已l找不到了命名空间。JSON与XML的另一个差别是属性的差异Q由于JSON采用冒号赋|q将D当XML转化为JSONӞ在标识符QXML CDATAQ与实际属性g间很隑֌分谁应该被当作文本考虑?/p> <p>  另外QJSON片段的创建和验证q程比一般的XMLE显复杂。从q一Ҏ(gu)看,XML在开发工h面领先于JSON。尽如此,Z消除(zhn)对q一领域可能存在的困惑,下节介l一些最为成熟的JSON开发?/p> <h3>从Web services生成JSON输出</h3> <p>  既然JSON的首要目标是来自览器的信道外请求,那么我们选择REST风格QRESTfulQWeb服务来生成这些数据。除了用典型业务逻辑探究Web服务之外Q还采用特定的API把本地Javal构转化为JSON格式Q详?参考资料)。首先,下面的Java代码用来操纵A(ch)ddress对象Q?/p> <pre class="code">// Create addressbook data structure SortedMap addressBook = new TreeMap(); // Create new address entries and place in Map // (See download for Address POJO structure) Address maryLebow = new Address("5 Main Street","San Diego, CA",91912,"619-332-3452","664-223-4667"); addressBook.put("Mary Lebow",maryLebow); Address amySmith = new Address("25 H Street","Los Angeles, CA",95212,"660-332-3452","541-223-4667"); addressBook.put("Sally May",amySmith); Address johnKim = new Address("2343 Sugarland Drive","Houston, TX",55212,"554-332-3412","461-223-4667"); addressBook.put("John Kim",johnKim); Address richardThorn = new Address("14 68th Street","New York, NY",,12452,"212-132-6182","161-923-4001"); addressBook.put("Richard Thorn",richardThorn); </pre> <p>  该Javal构在哪里生成ƈ不重要(可能是在JSP、Servlet、EJB或POJO中生成)Q重要的是,在REST风格Web 服务中有权用这些数据。如下示Q?/p> <pre class="code">// Define placeholder for JSON response String result = new String(); // Get parameter (if any) passed into application String from = request.getParameter("from"); String to = request.getParameter("to"); try { // Check for parameters, if passed filter address book if(from != null && to != null) { // Filter address book by initial addressBook = addressBook.subMap(from,to); } // Prepare the convert addressBook Map to JSON array // Array used to place numerous address entries JSONArray jsonAddressBook = new JSONArray(); // Iterate over filtered addressBook entries for (Iterator iter = addressBook.entrySet().iterator(); iter.hasNext();) { // Get entry for current iteration Map.Entry entry = (Map.Entry)iter.next(); String key = (String)entry.getKey(); Address addressValue = (Address)entry.getValue(); // Place entry with key value assigned to "name" JSONObject jsonResult = new JSONObject(); jsonResult.put("name",key); // Get and create address structure corresponding to each key // appending address entry in JSON format to result String streetText = addressValue.getStreet(); String cityText = addressValue.getCity(); int zipText = addressValue.getZip(); JSONObject jsonAddress = new JSONObject(); jsonAddress.append("street",streetText); jsonAddress.append("city",cityText); jsonAddress.append("zip",zipText); jsonResult.put("address",jsonAddress); // Get and create telephone structure corresponding to each key // appending telephone entries in JSON format to result String telText = addressValue.getTel(); String telTwoText = addressValue.getTelTwo(); JSONArray jsonTelephones = new JSONArray(); jsonTelephones.put(telText); jsonTelephones.put(telTwoText); jsonResult.put("phoneNumbers",jsonTelephones); // Place JSON address entry in global jsonAddressBook jsonAddressBook.put(jsonResult); } // end loop over address book // Assign JSON address book to result String result = new JSONObject().put("addressbook",jsonAddressBook).toString(); } catch (Exception e) { // Error occurred } </pre> <p>  Z便于说明Q我们已这D代码将|入JSPQrestservice.jsp)中。如果它真是一D늨序,那么cMq样的代码也?x)出现在servlet或helpercM?REST风格Web服务首先提取两个通过URLh传递给它的输入参数Q根据这些D滤现有的地址以适应h。过滤过地址后Q即可开始@环检查Java映射中的每个条目?/p> <p>  (zhn)会(x)注意刎ͼ在@环内部,json.org API被广泛用于将本地Java格式转化为JSON字符丌Ӏ虽然仅使用了少量类Q即JSONArray和JSONObjectQ,但API提供的{换方法相当广泛,甚至能将XMLl构转换成JSON输出。但回到我们的Web服务Q一旦@环遍历了所有条目,那么变量“result”?x)包含准备返回给h方的地址的JSON同等部分?/p> <p>  既然已经生成了JSON输出Q下面来看看{式的另一边:(x)览器应用程序中JSON有效负蝲的用?/p> <h3>JSON有效负蝲的?/h3> <p>  作ؓ(f)Z览器的客户端,我们的设计中大部分工作都是在HTML、JavaScript加上附加的JavaScript 框架下完成的。例如利用Prototype库轻村ֈ览器样式的Ajax调用。下面的清单包含了我们的应用E序的第一部分Q以?qing)相应的JavaScript函数?/p> <pre class="code"><html> <head> <title> JSON Address Book </title> <script type="text/javascript" src="prototype-1.4.0.js"></script> <script type="text/javascript"> // Method invoked when user changes letter range function searchAddressBook() { // Select values from HTML select lists var fromLetter = $F('fromLetter'); var toLetter = = $F('toLetter'); // Prepare parameters to send into REST web service var pars = 'from=' + fromLetter + '&to=' + toLetter; // Define REST web service URL var url = 'restservice.jsp'; // Make web service Ajax request via prototype helper, // upon response, call showResponse method new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: showResponse }); } </script> </head> </pre> <p>  首先导入了prototype库,该库用于促进对REST风格Web服务的Ajax调用。接下来是searchAddressBook()函数Q当用户修改其下所C的HTML选择列表Ӟ会(x)触发此函数。该函数被触发后Q用户将?x)获得HTML选择列表中已选中的选项Qƈ其攑օ两个用于qo(h)地址的变量中,随后定义一个指向REST风格服务URL restservice.jsp的附加变量?/p> <p>  此方法中q包括借助原型函数new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: showResponse }); 的实际Ajax Web服务调用Q表明了对相关URL的一个请求,其请求参数包含在pars中;最后一旦Ajaxhl止Q即执行showResponse()?/p> <p>  下面以showResponse()Z说明用于评估JSON有效负蝲q将其放入HTMLM布局环境中的的必要代码?/p> <pre class="code">// Method invoked when page receives Ajax response from REST web service function showResponse(originalRequest) { // Get JSON values jsonRaw = originalRequest.responseText; // Eval JSON response into variable jsonContent = eval("(" + jsonRaw + ")"); // Create place holder for final response finalResponse = "<b>" + jsonContent.addressbook.length + " matches found in range</b><br/>"; // Loop over address book length. for (i = 0; i < jsonContent.addressbook.length; i++) { finalResponse += "<hr/>"; finalResponse += "<i>Name:</i> " + jsonContent.addressbook[i].name + "<br/>"; finalResponse += "<i>Address:</i> " + jsonContent.addressbook[i].address.street + " -- " + jsonContent.addressbook[i].address.city + "," + jsonContent.addressbook[i].address.zip + ".<br/>"; finalResponse += "<i>Telephone numbers:</i> " + jsonContent.addressbook[i].phoneNumbers[0] + " & " + jsonContent.addressbook[i].phoneNumbers[1] + "."; } // Place formatted finalResponse in div element document.getElementById("addressBookResults").innerHTML = finalResponse; } </pre> <p>  此方法的输入参数是REST风格Web服务在调用时q回的响应。既焉先已l知道需要处理JSON字符Ԍ那么可以利用JavaScript eval()函数Q将q个JSON字符串放入内存,q允许数据访问,正是q样的简便性促使开发h员用JSON。完全不需要进行解析,一个简单的eval()卛_得到JavaScriptl构Q我们可以像操纵其他MJavaScriptl构一样地LU它?/p> <p>  一旦JSON响应l过eval处理Q将创徏一个JavaScript循环来提取每个地址条目Qƈ各个匹配项攑օ一个名为finalResponse的容器变量中。而这个容器变量本w包含所有必要的格式Q用于在面布局中显C最l地址ѝ@环结束时Q匹配项也通过document.getElementById("addressBookResults").innerHTML攄完毕?/p> <p>  最后,Z保持完整Q页面的实际布局p些代码组成:(x)</p> <pre class="code"><body> <h4 style="text-align:left">Request address book matches:</h4> <table style="text-align:left" cellpadding="15"><tr><td valign="top">From:<br/> <select id="fromLetter" size="15" onchange="searchAddressBook()"> <option>A</option> ... <option>Z</option> </select> </td><td valign="top">To:<br/> <select id="toLetter" size="15" onchange="searchAddressBook()"> <option>A</option> ... <option>Z</option> </select> </td><td valign="top"> <h5> Results </h5> <div style="text-align:left" id="addressBookResults">Please select range</div> </td></tr> </table> </body> </pre> <p>  上面的代码清单中最值得一提的是HTML选择列表Q因Z改触发器JavaE序需要调用信道外Ajaxh。其ơ,<div>元素是攄格式化后的JSON响应的地斏V?nbsp;                                                                         </p> <h3>JSON适合(zhn)吗</h3> <p>  像在Y件设计中~程语言的选择一PJSON的选择与否取决于?zhn)自n的需求。如果Web services<em>使用?/em>在传统、功能完备的~程环境Q如Java ?NET、PHP、Ruby{)中创建,那么完全可以不用JSON。给定大多数~程语言环境的无限制能力可提供完整的配置控制权(更不必说对定制库、分析器或helpercȝ讉KQ,那么JSON与XML?qing)其他Web services有效载荷之间的差别可以忽略不计?/p> <p>  反之Q如果Web services<em>使用?/em>被限制在览器环境之外,那么JSON是值得认真考虑的对象?在浏览器中用Web servicesq兴趣使然Q而是实际业务需求。如果这旉要一个加载数据时不会(x)出现延迟/h?#8220;漂亮的Web 2.0界面”Q?׃得不在浏览器中嵌入Ajax和W(xu)eb services技术?/p> <p>  在这U情况下Q?zhn)不仅受限于通过|络讉K处理环境Q而且q会(x)受到随机用户的限Ӟqɾl验丰富的开发h员用最普遍的工具在览器中处理文本Q例如:(x)前述的DOMQ与讉KJSON?wi)相比,DOM使用h非常困难?/p> <h3>CZ代码</h3> <p>  (zhn)可下蝲与本文相关的代码?/p> <ul> <li><a target="_blank">json_addressbook.zip</a> ——示例代码和实用工具 </li> </ul> <p>  安装之前先解压下载得到的文gQ将addressbook.html,prototype-1.4.0.js和restservice.jsp攑օLE序的目录下。将内含的json.jar复制到所选程序的/WEB-INF/lib目录下。访?lt;yourhost>/<yourappdir>/addressbook.htmlQƈ在HTML列表中进行选择。一切就l,可以q行JSON了!</p> <h3>l束?/h3> <p>  管 “Ajax”中的“x”代表XMLQW(xu)eb services也通过坚持使用XML格式而成Z,但这q不意味着q种方式无懈可击。在文本处理斚wQXML在AjaxE序的应用中已经暴露Z些缺炏V在q种情Ş下,JSON逐渐成ؓ(f)引h注目的XML替代Ҏ(gu)?/p> <p>  通过对JSON语法优缺点的Q以?qing)对如何从REST风格Web services创徏JSON输出、如何将其嵌入Web面布局{问题的介绍Q?zhn)现在应该能够为最l用h供支持JSON的Web servicesQ接触当前提供的大量利用q一极具前途的格式的Web services?/p> <h3>参考资?/h3> <ul> <li><a >Ajax?/a>QDavid TeareQDev2DevQ?005q?月)——介lAjax的相x术背? <li><a target="_blank">JSON in Java </a>——介l用Java API本地Javal构转换成JSON输出 <li><a target="_blank">Prototype</a> ——介l用于创建Ajax应用E序的JavaScript框架 <li><a target="_blank">JSON.org </a>——JSON主页Q其中包含可生成JSON的各U语a库的资源和链?</li> </ul> <!--文章其他信息--> <div id="wmqeeuq" class="dot001"><img height="1" alt="" src="http://dev2dev.bea.com.cn/images/_.gif" width="100%" /></div> <table cellspacing="0" cellpadding="3" width="100%" border="0"> <tbody> <tr valign="bottom"> <td colspan="2" height="20"> <span id="wmqeeuq" class="h2b">作者简?/span></td> </tr> <tr> <td valign="top" align="center" width="0"></td> <td><a target="_blank">Daniel Rubio</a> 是一名Y仉问,h十余q的企业软g开发经验。近期,他创办了Mashup Soft公司Q开始专Mؓ(f)Mashup使用Web services的有x面?/td> </tr> </tbody> </table> <img src ="http://www.aygfsteel.com/WshmAndLily/aggbug/146937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/WshmAndLily/" target="_blank">semovy</a> 2007-09-20 21:57 <a href="http://www.aygfsteel.com/WshmAndLily/articles/146937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSON?/title><link>http://www.aygfsteel.com/WshmAndLily/articles/146935.html</link><dc:creator>semovy</dc:creator><author>semovy</author><pubDate>Thu, 20 Sep 2007 13:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/WshmAndLily/articles/146935.html</guid><wfw:comment>http://www.aygfsteel.com/WshmAndLily/comments/146935.html</wfw:comment><comments>http://www.aygfsteel.com/WshmAndLily/articles/146935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/WshmAndLily/comments/commentRss/146935.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/WshmAndLily/services/trackbacks/146935.html</trackback:ping><description><![CDATA[<table width="100%" border="0"> <tbody> <tr> <td valign="middle" align="center" width="160"><img height="160" src="http://www.json.org/img/json160.gif" width="160" align="left" border="0" alt="" /></td> <td valign="middle" align="center"> <div style="border-right: black 2px solid; padding-right: 10px; border-top: black 2px solid; padding-left: 10px; padding-bottom: 10px; margin-left: 40px; border-left: black 2px solid; margin-right: 40px; padding-top: 10px; border-bottom: black 2px solid; font-family: serif; background-color: white"> <h1 align="center">介绍 JSON</h1> </div> </td> </tr> </tbody> </table> <hr /> <div align="center"><small><a >Arabic</a> <a >Chinese</a> <a >Czech</a> <a >Dutch</a> <a >English</a> <a >French</a> <a >German</a> <a >Greek</a> <a >Hebrew</a> <a >Indonesian</a> <a >Italian</a> <a >Japanese</a> <a >Korean</a> <a >Persian</a> <a >Polish</a> <a >Portuguese</a> <a >Russian</a> <a >Slovenian</a> <a >Spanish</a> <a >Turkish</a> </small></div> <hr /> <div style="border-right: black 2px solid; padding-right: 10px; border-top: black 2px solid; padding-left: 10px; float: right; padding-bottom: 10px; margin: 10px; border-left: black 2px solid; padding-top: 10px; border-bottom: black 2px solid; background-color: white"> <dl> <dt><em>object</em> <dd><tt><strong>{}</strong></tt><br /> <tt><strong>{</strong></tt> <em>members</em> <tt><strong>}</strong></tt> <dt><tt><strong></strong></tt> <dt><em>members</em> <dd><em>pair</em><br /> <em>pair</em> <tt><strong>,</strong></tt> <em>members</em> <dt><em>pair</em> <dd><em>string</em> <tt><strong>:</strong></tt> <em>value</em> <dt><em>array</em> <dd><tt><strong>[]</strong></tt><br /> <tt><strong>[</strong></tt> <em>elements</em> <tt><strong>]</strong></tt> <dt><em>elements</em> <dd><em>value</em> <br /> <em>value</em> <tt><strong>,</strong></tt> <em>elements</em> <dt><em>value</em> <dd><em>string</em><br /> <em>number</em><br /> <em>object</em><br /> <em>array</em><br /> <tt><strong>true</strong></tt><br /> <tt><strong>false</strong></tt><br /> <tt><strong>null</strong></tt> </dd></dl> <hr align="center" width="144" /> <dl> <dt><em>string</em> <dd><tt><strong>""</strong></tt><br /> <tt><strong>"</strong></tt> <em>chars</em> <tt><strong>"</strong></tt> <dt><em>chars</em> <dd><em>char</em><br /> <em>char chars</em> <dt><em>char</em> <dd><small><em>any-Unicode-character-</em></small><br /> <small>    <em>except-</em></small><strong><tt>"</tt></strong><small><em>-or-</em></small><strong><tt>\</tt></strong><small><em>-or-</em></small><br /> <small>    <em>control-character</em></small><br /> <tt><strong>\"</strong></tt><br /> <tt><strong>\\</strong></tt><br /> <tt><strong>\/</strong></tt><br /> <tt><strong>\b</strong></tt><br /> <tt><strong>\f</strong></tt><br /> <tt><strong>\n</strong></tt><br /> <tt><strong>\r</strong></tt><br /> <tt><strong>\t</strong></tt><br /> <tt><strong>\u</strong></tt> <em>four-hex-digits</em> <dt><em>number</em> <dd><em>int</em><br /> <em>int frac</em><br /> <em>int exp</em><br /> <em>int frac exp</em> <dt><em>int</em> <dd><em>digit</em><br /> <em>digit1-9 digits</em> <br /> <tt><strong>-</strong></tt> <em>digit</em><br /> <tt><strong>-</strong></tt> <em>digit1-9 digits</em> <dt><em>frac</em> <dd><strong><tt>.</tt></strong> <em>digits</em> <dt><em>exp</em> <dd><em>e</em> <em>digits</em> <dt><em>digits</em> <dd><em>digit</em><br /> <em>digit</em> <em>digits</em> <dt><em>e</em> <dd><strong><tt>e</tt></strong><br /> <strong><tt>e+</tt></strong><br /> <strong><tt>e-</tt></strong><br /> <strong><tt>E</tt></strong><br /> <strong><tt>E+</tt></strong><br /> <strong><tt>E-</tt></strong> </dd></dl></div> <p><strong>JSON</strong>(JavaScript Object Notation) 是一U轻量的数据交换格式。易于h阅读和编写。同时也易于机器解析和生成。它Z<a >JavaScript Programming Language</a>, <a >Standard ECMA-262 3rd Edition - December 1999</a>的一个子集?JSON采用完全独立于语a的文本格式,但是也用了cM于C语言家族的习(fn)惯(包括C, C++, C#, Java, JavaScript, Perl, Python{)。这些特性JSON成ؓ(f)理想的数据交换语a?/p> <p>JSON建构于两U结构:(x)<br /> </p> <ul> <li>“名称/?#8221;对的集合QA collection of name/value pairsQ。不同的语言中,它被理解?em>对象QobjectQ?/em>Q纪录(recordQ,l构QstructQ,字典QdictionaryQ,哈希表(hash tableQ,有键列表Qkeyed listQ,或者关联数l?Qassociative arrayQ? <li>值的有序列表QAn ordered list of valuesQ。在大部分语a中,它被理解为数l(arrayQ?</li> </ul> <p>q些都是常见的数据结构。事实上大部分现代计机语言都以某种形式支持它们。这使得一U数据格式在同样Zq些l构的编E语a之间交换成ؓ(f)可能?/p> <p>JSONh以下q些形式Q?/p> <p>对象是一个无序的“‘名称/?#8217;?#8221;集合。一个对象以“{”Q左括号Q开始,“}”Q右括号Q结束。每?#8220;名称”后跟一?#8220;:”Q冒PQ?#8220;‘名称/?#8217; ?#8221;之间使用“,”Q逗号Q分隔?</p> <p><img height="113" src="http://www.json.org/object.gif" width="598" alt="" /></p> <p>数组是|valueQ的有序集合。一个数l以“[”Q左中括P开始,“]”Q右中括Pl束。g间?#8220;,”Q逗号Q分隔?</p> <p><img height="113" src="http://www.json.org/array.gif" width="598" alt="" /></p> <p>|<em>value</em>Q可以是双引hh的字W串Q?em>string</em>Q、数?number)?code>true</code>?code>false</code>?<code>null</code>、对象(objectQ或者数l(arrayQ。这些结构可以嵌套?</p> <p><img height="278" src="http://www.json.org/value.gif" width="598" alt="" /></p> <p>字符Ԍ<em>string</em>Q是由双引号包围的Q意数量Unicode字符的集合,使用反斜U{义。一个字W(characterQ即一个单独的字符Ԍcharacter stringQ?</p> <p>字符Ԍ<em>string</em>Q与C或者Java的字W串非常怼? <p><img height="413" src="http://www.json.org/string.gif" width="598" alt="" /></p> <p>数|<em>number</em>Q也与C或者Java的数值非常相伹{除L曾用的八进制与十六q制格式。除M些编码细节?/p> <p><img height="266" src="http://www.json.org/number.gif" width="598" alt="" /></p> <p>I白可以加入CQ何符号之间?以下描述了完整的语言?/p> <hr /> <div style="float: left"> <ul> <li><a >ASP</a>. <li>ActionScript: <ul> <li><a >ActionScript1</a>. <li><a >ActionScript2</a>. <li><a >ActionScript3</a>. <li><a >JSONConnector</a>. </li> </ul> <li>C</a>. <ul> <li><a >json-c</a>. <li><a >JSON_checker</a>. <li><a s JSON parser</a>. </li> </ul> <li>C++: <ul> <li><a >jsoncpp</a>. <li><a >zoolib</a>. <li><a >Jaula</a>. <li><a >JOST</a>. <li><a >JSON Spirit</a>. </li> </ul> <li>C#: <ul> <li><a >Jayrock</a>. <li><a >Newtonsoft Json.NET</a>. <li><a >JSONSharp</a>. <li><a >LitJSON</a>. </li> </ul> <li>Cold Fusion: <ul> <li><a >CFJSON</a>. <li><a >JSON Serializer</a>. </li> </ul> <li><a >D</a>. <li>Delphi: <ul> <li><a >Delphi Web Utils</a>. <li><a >JSON Delphi Library</a>. <li><a >JSON Toolkit</a>. </li> </ul> <li><a >E</a>. <li><a >haXe</a>. </li> </ul> </div> <div style="float: left"> <ul> <li><a >Erlang</a>. <li>Haskell: <ul> <li><a >JSON.hs</a>. <li><a >HaskellNet</a>. </li> </ul> <li>Java: <ul> <li><a >org.json</a>. <li><a >org.json.me</a>. <li><a >Json-lib</a>. <li><a >JSON Tools</a>. <li><a >org.json.simple</a>. <li><a >Stringtree</a>. <li><a >SOJO</a>. <li><a >VRaptor</a>. <li><a >Restlet</a>. <li><a >Jettison</a>. <li><a >json-taglib</a>. <li><a >FLEXJSON</a>. <li><a >XStream</a>. </li> </ul> <li><a >JavaScript</a>. <li><a >Lasso</a>. <li>Lisp: <ul> <li><a >Common Lisp</a>. <li><a >Emacs Lisp</a>. <li><a >Chicken Scheme</a>. <li><a >MZScheme</a>. </li> </ul> <li><a >LotusScript</a>. <li>Lua: <ul> <li><a >Json4Lua</a>. <li><a >Json.lua</a>. </li> </ul> <li><a >Objective C</a>. </li> </ul> </div> <div style="float: left"> <ul> <li><a >Objective CAML</a>. <li><a >OpenLaszlo</a>. <li><a >Perl</a>. <li>PHP: <ul> <li><a >PHP 5.2</a>. <li><a >json</a>. <li><a >Services_JSON</a>. <li><a >Zend_JSON</a>. <li><a >JSONRPC</a>. <li><a >Solar_Json</a>. <li><a >SCA_SDO</a>. <li><a >Comparison of php json libraries</a>. </li> </ul> <li>Pike: <ul> <li><a >Public.Parser.JSON</a>. <li><a >Public.Parser.JSON2</a>. </li> </ul> <li><a >pl/sql</a>. <li><a >PowerShell</a>. <li><a >Prolog</a>. <li>Python: <ul> <li><a >python-cjson</a>. <li><a >simplejson</a>. <li><a >python-json</a>. <li><a >demjson</a>. <li><a >pyparsing</a>. <li><a >Choosing a Python JSON Translator</a>. </li> </ul> <li><a >R</a>. <li><a >REALbasic</a>. <li><a >Rebol</a>. <li><a >Ruby</a>. <li><a >Squeak</a>. </li> </ul> </div> <br clear="left" /> <hr /> <div style="float: left"> <ul> <li><a >RFC 4627</a>. <br /> <li><a >The <code><module></code> Tag</a>. <li><a >JSONRequest</a>. <li><a >JSONRequest Extension for Firefox</a>. </li> </ul> </div> <div style="float: left"> <ul> <li><a >JSONT</a>. <li><a >JsonML</a>. <li><a >CSS JSON</a>. <br /> <li><a >JSON 2 HTML</a>. <li><a >XSLTJSON</a>. <li><a >xml2json-xslt</a>. <li><a >x-xml2jsonphp</a>. </li> </ul> </div> <div style="float: left"> <ul> <li><a >JSON-RPC</a>. <li><a >JSON-RPC-Page</a>. <li><a >JSON-RPC-JAVA ORB</a>. <li><a >JSON-Cache</a>. <br /> <li><a >The Fat-free Alternative to XML</a> <li><a >An example of JSON-encoded messages</a>. <li><a >The JSON Group on Yahoo!</a> <li><a >Yahoo! JSON</a><br /> </li> </ul> </div> <br clear="left" /> <hr /> <p><a >Why JSON isn't just for JavaScript</a> • <a >I can't believe it's not XML!</a> • <a >The JSON vs XML debate begins in earnest</a> • <a >JSON and XML</a> • <a >Why JSON vs XML is a yawn</a> • <a >JSON vs. XML as a data interchange format</a> • <a >Examining JSON</a> • <a >JSON and .Net</a> • <a >An Introduction to JSON</a> • <a >Shaping the future of secure Ajax mashups</a> • <a >JSON and Browser Security</a> </p> <div style="float: left">json@JSON.org</div> <img src ="http://www.aygfsteel.com/WshmAndLily/aggbug/146935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/WshmAndLily/" target="_blank">semovy</a> 2007-09-20 21:55 <a href="http://www.aygfsteel.com/WshmAndLily/articles/146935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̶</a>| <a href="http://" target="_blank">ֹ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">غ</a>| <a href="http://" target="_blank">Ρɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">֬</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank">Ӷ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ұ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">üɽ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">«Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>