在使用Ajax方式构建的web2.0应用中,通常需要使用JSON作为数据交换的格式,JSON和XML相比较,更加便于解析,易于学习和使用。
最原始的Ajax方式是创建XmlHttpRequest对象,来进行发送请求和接收响应的。但是,创建方式过于复杂,需要考虑到浏览器的兼容性、字符编码等诸多因素。
JQuery是一种基于Javascript的前端框架,提供了对Ajax的轻量级封转,以一种更加友好的方式使用Ajax技术,通常为$.ajax或者$.get/$.post方式。
EasyUI和Extjs则是Javascript的重量级封装库。这两者都提供了非常优秀的前端UI组件,例如日历组件calendar,表格组件datagrid,树状空间tree等;这些重量级的UI框架,提供了对Ajax更加良好的支持,很多情况下只需要提供ajax请求的url以及用于响应的data即可,开发者不再需要因为处理Ajax请求与响应的技术细节而抓耳挠腮了!
在传统的Java web开发中,我们通常使用out对象将生成的JSON文本写出到客户端,在前端使用Javascript对服务器端返回的JSON文本进行解析即可。
使用过Spring MVC的童鞋,一定会被它的强大并且简单所深深折服。Spring MVC框架会自动地将实体对象、或者实体对象List集合,转换为客户端所需要的JSON文本,而仅仅需要添加对Jackson.jar的依赖即可|伦理电影 www.akdy.cn
如果使用其他的框架技术如struts,或者使用servlet作为控制器的话,需要开发者手动的实现实体、实体集合到JSON文本的转换功能。幸运的是,我们可以使用开源的JSON处理包来帮助我们完成此项功能。如果使用json-lib-2.2.2-jdk15.jar的话,需要添加很多依赖包:
ezmorph.jar
commons-logging.jar
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
比较繁琐,当然如果使用Maven作为项目构建工具,这自然不是问题。
我们还有更多选择的余地,Alibaba的温少实现了一个JSON处理jar,并且已经作为开源项目:fastjson-1.1.33.jar [可下载附件]。fastjson的优点是:开放源码、没有多余的依赖jar、强大并且性能显著。
[1]. 转为Java类型为JSON文本:
@ 大多数情况下,只需要一行代码即可,提供的参数可以是Java对象、对象的List集合,或者Map类型、Map的List集合等:String jsonStr = JSON.toJSONString(arg)
@ 如果存在Date类型的字段:如下代码是一种更加简单的处理方式:
String jsonStr = JSON.toJSONStringWithDateFormat(user,"yyyy-MM-dd");
@ 为了便于观察转换后的JSON结果,我们可以使用重载的方法,设置prettyFormat参数为true即可:
String jsonStr = JSON.toJSONString(user,true);
---------------------OUTPUT------------------------
[
{
"stuId":1,
"stuName":"James"
},sans-serif">"stuId":2,sans-serif">"stuName":"Bill"
}
]
[2]. JSON文本转为Java对象:
Userinfo user = JSON.parSEObject(jsonStr,Userinfo.class);
我们可以将客户端传入的JSON文本,反序列化为Java实体。
[3]. 使用JSONObject对象:
@ 在进行某项操作,比如删除时,我们需要反馈给客户端一个包含多个字段的对象:
JSONObject result = new JSONObject();
result.put("success",true);
result.put("msg","删除成功!");
@ 输出时,转换为JSON文本: