此方法的输入参数是REST风格Web服务在调用时返回的响应。既然预先已经知道需要处理JSON字符串,那么可以利用JavaScript eval()函数,将这个JSON字符串放入内存,并允许数据访问,正是这样的简便性促使开发人员使用JSON。完全不需要进行解析,一个简单的eval()即可得到JavaScript结构,我们可以像操纵其他任何JavaScript结构一样地去操纵它。
一旦JSON响应经过eval处理,将创建一个JavaScript循环来提取每个地址条目,并将各个匹配项放入一个名为finalResponse的容器变量中。而这个容器变量本身包含所有必要的格式,用于在页面布局中显示最终地址簿。循环结束时,匹配项也通过document.getElementById("addressBookResults").innerHTML放置完毕。
最后,为了保持完整,页面的实际布局由这些代码组成:
<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> |
上面的代码清单中最值得一提的是HTML选择列表,因为修改触发器Java程序需要调用信道外Ajax请求。其次,<div>元素就是放置格式化后的JSON响应的地方。
JSON适合您吗
就像在软件设计中编程语言的选择一样,JSON的选择与否取决于您自身的需求。如果Web services使用者将在传统、功能完备的编程环境(如Java 、.NET、PHP、Ruby等)中创建,那么完全可以不使用JSON。给定大多数编程语言环境的无限制能力可提供完整的配置控制权(更不必说对定制库、分析器或helper类的访问),那么JSON与XML及其他Web services有效载荷之间的差别可以忽略不计。
反之,如果Web services使用者被限制在浏览器环境之外,那么JSON是值得认真考虑的对象。 在浏览器中使用Web services并非兴趣使然,而是实际业务需求。如果这时需要一个加载数据时不会出现延迟/刷新的“漂亮的Web 2.0界面”, 就不得不在浏览器中嵌入Ajax和Web services技术。
在这种情况下,您不仅受限于通过网络访问处理环境,而且还会受到随机用户的限制,迫使经验丰富的开发人员用最普遍的工具在浏览器中处理文本,例如:前述的DOM,与访问JSON树相比,DOM使用起来非常困难。
安装之前先解压下载得到的文件,将addressbook.html,prototype-1.4.0.js和restservice.jsp放入任意程序的目录下。将内含的json.jar复制到所选程序的/WEB-INF/lib目录下。访问
结束语
尽管 “Ajax”中的“x”代表XML,Web services也通过坚持使用XML格式而成为主流,但这并不意味着这种方式无懈可击。在文本处理方面,XML在Ajax程序的应用中已经暴露出一些缺点。在这种情形下,JSON逐渐成为引人注目的XML替代方案。
通过对JSON语法优缺点的论述,以及对如何从REST风格Web services创建JSON输出、如何将其嵌入Web页面布局等问题的介绍,您现在应该能够为最终用户提供支持JSON的Web services,接触当前提供的大量利用这一极具前途的格式的Web services。