`
longgangbai
  • 浏览: 7340884 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

对于B/S结构的企业应用来说,Web前台编程占了70%以上的工作量,根本原因就是在于程序员受限于浏览器。我们知道,浏览器接受到的后台服务器传过来的数据能够呈现给程序员、并可以由程序员来操纵的从应用的层面上讲只有文本(当然浏览器也可以接受非文本的数据,浏览器会以自己的方式处理,我们就无能为力了),所以对于前台程序员来说,要做的就是把这些文本转换为用户可读的页面。

 于是,我们就一直在做把数据和HTML标签拼接然后输出的工作。

后来我们使用某些复用技术,如JSP的自定义标签(这也有两个层次,

一是对流程控制、获取数据等基本操作的封装,如JSTL等;

二是对页面构件的封装,例如把List封装成Table输出等),我还是比较欣赏使用JSP标签方式的。

当然,随着Web2.0概念的提出,又出现了新的方式,那就是在前台(浏览器)里使用脚本(多数为JavaScript)来动态的渲染(render)页面。于是为了前台构件复用,我们需要的不仅仅是数据,可能还需要数据的结构、展现方式、动态效果等信息,也就是说我们需要一种方式把数据以及数据展现的相关信息以文本的方式传到前台来。其实感觉上好像回到了最原始的状态,因为这和我们直接把组织好的HTML输出到浏览器是一个理念。但是,基于对用户界面体验的考虑,也从技术流行的角度上(我认为很大程度上是大家对AJAX技术的迷信),我们不能再走老路。

现在就需要我们选择了,我们需要选择一种文本结构把数据以及数据展现的相关信息传到前台来,

首选的是XML(我觉着XML是软件技术的一次重大革新),好像没有比它更合适的了,配合XPATH、XSL等技术JS对XML的解析、操纵可以称得上简便易用,唯一差强人意的是性能略差(性能还可接受,但是确实有待提高)。

 

JSON不知道从什么时候起,也成为了前后台数据交互的一种数据格式,它的优点就是简单,从后台传过来文本如果格式正确,只要简单的调用一下JS的eval方法就可以把一个字符串转换成JS对象。这个JavaScript旧瓶好像是被装上了新酒,于是焕发出了惊人的活力,看看现在网络上流行的JS前台框架,ext、dojo、yui等等都或多或少或直接或间接的把JSON对象作为数据格式应用在自己的API、页面构件中。有了前台脚本的支持,我们所需要的就是后台对JSON格式的组织、操纵等行为的支持,于是就有了以各种语言(C#、Java、Perl等等,去http://www.json.org看吧)实现的类库,json-lib就是用Java语言实现的这样一套类库。我以前也使用过这个类库的几个基本的简单功能,现在这个开源项目的版本已经升级到2.3(我现在研究的是2.1),所以我觉着很有必要接触一下它的很多相对高级的功能。

运行所需要的类库:

commons-beanutils-1.7.0.jar

commons-collections-3.2.jar

commons-lang-2.3.jar

commons-logging-1.1.jar

ezmorph-1.0.3.jar

json-lib-2.1.jar

这是我本机上的运行环境,我用的json-lib是2.1版本,其实官方网站上有明确的说明。

 

 

JSON对象格式的定义,我们就很容易的通过服务器端程序动态输出JSON字符串到客户端。

先看看下面的例子:


{items:[    
{    
id:1,    
author:\"Achely\",   
url:\"http://www.zhangyongjun.com\",   
content:\"Welcome to Achely blog\"   
},   
{   
id:2,   
author:\"Achely2\",   
url:\"http://www.zhangyongjun.com\",   
content:\"Welcome to Achely blog\"   
}    
]};   

与之对应的XML格式:


<items>   
    <item>   
        <id>1</id>   
        <author>Achely</author>   
        <url>http://www.zhangyongjun.com</url>   
        <content>Welcome to Achely blog</content>   
    </item>   
    <item>   
        <id>2</id>   
        <author>Relkn</author>   
        <url>http://www.zhangyongjun.com</url>   
        <content>Welcome to Achely blog</content>   
    </item>    
</items>

通过上面,我们不难看出:

1、对象:
{name:"achely",email:"achely@gmail.com",homepage:"http://www.zhangyongjun.com"}
{ 属性 : 值 , 属性 : 值 , 属性 : 值 }


2、数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
[
{name:"achely",email:"achely@gmail.com",homepage:"http://www.zhangyongjun.com"}, {name:"achely",email:"achely@gmail.com",homepage:"http://www.zhangyongjun.com"},
{name:"achely",email:"achely@gmail.com",homepage:"http://www.zhangyongjun.com"}
]


3、值可以是字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。

那么,在客户端的JS中如何访问JSON对象呢?

js中这样的定义:

var obj='{name:"achely",email:"achely@gmail.com",homepage:"http://www.topmanopensource.iteye.com"} ';

属性访问:obj.name

数组访问:obj.array[i]

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics