.jpg)
原创作者:北大青鸟徐州中博-侯明强
声明:该文章的版权属于北大青鸟-徐州中博所有,欢迎任何网站转载本文,但必须申明出处,否则必将追究法律责任!
Json大家想必有所了解吧。随着RIA(富客户端互联网程序)越来越火,相信不久的将来RIA应用会逐步代替现在传统的(B/S瘦客户端)程序。在RIA程序中最火的要数”EXTJS”应用。它以最佳“视图展现”颠覆了我们对B/S程序原有“丑陋外观”的看法。它可以使我们的B/S应用具有“精美绝伦”外观,毫不逊色于C/S桌面应用程序。在使用该技术完成View(视图层)时,我们必须把Model(模型层)提供的数据转换成JSON格式。如何转换?假如你web层使用的是Struts2.x的话,转换过程是相当容易的。因为Struts2.x已经提供了相关转换插件。但是,如果我们的web层使用的是Struts1.x的话,我们不得不自已转换。这时转换可以使用比较有名的“JSON-Lib”框架进行转换。但是,上网查了一下,使用JSON-Lib这个框架的性能是公认的差。如果你的应用需要提升“性能”,建议大家不要使用该框架。这时我们可以选择由Google提供的“google-gson框架”。Google想必大家都清楚吧,全世界最有名的“搜索引擎”,如果你没有使用过www.google.com搜索,那你就”Out”了。”google-gson”既然出身“豪门”,想必不会有多差。因此,我做了一番实现。结论如下:条件是任意多个java对象数据集合转换成JSON字符串。在同样的条件下,google-gson性能比JSON-Lib提高了两倍以上,特别是在对一个很大的、有冗余的Object做转换时性能更是能提高3-4倍。而且,API使用也很方便,一个gson.toJSON(obj)就可以完成转换的操作。看到了吧,果然是“豪门悍将”。不得不再次佩服Google,它不仅给我们提供了丰富的搜索,而且给程序开发者提供了众多优秀开发库。好了,闲话不做多说,下面举个示例来演示一下该库的使用方法。
示例
1. 首选到http://code.google.com/p/google-gson/ 该网站下载” google-gson框架”,我选择的是google-gson-1.4-release版本。下面提供的源代码中包括该库。
2. 在MyEclipse环境下建立一个工程。然后将gson-1.4.jar拷贝到WEB-INF/lib目录下,最后结构如下图所示:
3. 在entity包下建立实体类School.java类。代码如下:
package entity;
/**
* School实体
* @author 北大青鸟-徐州中博-侯明强
*
*/
public class School implements java.io.Serializable{
private Integer id;
private String name;
private String adddress;
private String telphone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public School()
{
}
public School(Integer id, String name, String adddress, String telphone) {
super();
this.id = id;
this.name = name;
this.adddress = adddress;
this.telphone = telphone;
}
public void setName(String name) {
this.name = name;
}
public String getAdddress() {
return adddress;
}
public void setAdddress(String adddress) {
this.adddress = adddress;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
}
4. 在dao包下建立School的仓库类SchoolDao.java类。代码如下:
package dao;
import java.util.ArrayList;
import java.util.List;
import entity.School;
/**
* SchooDao提供School仓库
* @author 北大青鸟-徐州中博-侯明强
*
*/
public class SchoolDao {
@SuppressWarnings("unchecked")
public List findAll()
{
List schools = new ArrayList();
schools.add(new School(1,"北大青鸟-徐州中博","徐州解放南路181号","0516-85628888 "));
schools.add(new School(2,"北大青鸟-南京中博","南京市白下区建邺路66号3层(张府园地铁3号出口)","025-84200066"));
schools.add(new School(3,"北大青鸟-南京中博测试","南京市中山南路89号江苏文化大厦22F","025-86977000"));
return schools;
}
public School getOneSchool()
{
return new School(1,"北大青鸟-徐州中博","徐州解放南路181号","0516-85628888");
}
}
5. 在默认包下建立TestMain.java类。代码如下:
import java.util.List;
import com.google.gson.Gson;
import dao.SchoolDao;
import entity.School;
/**
* 主动类
* @author 北大青鸟-徐州中博-侯明强
*
*/
public class TestMain {
/**
* 程序主入口
* @param args
*/
public static void main(String[] args) {
SchoolDao schoolDao = new SchoolDao();
List schools = schoolDao.findAll();
School school = schoolDao.getOneSchool();
//实例化google提供的JSON框架类,瞧这使用多简单
Gson gson = new Gson();
System.out.println("将实体集合转换成Json格式");
System.out.println(gson.toJson(schools));
System.out.println("=========================================");
System.out.println("将单个实体转换成Json格式");
System.out.println(gson.toJson(school));
}
}
6. 运行测试类TestMain.java结果如下:
将实体集合转换成Json格式
[{"id":1,"name":"北大青鸟-徐州中博","adddress":"徐州解放南路181号","telphone":"0516-85628888 "},{"id":2,"name":"北大青鸟-南京中博","adddress":"南京市白下区建邺路66号3层(张府园地铁3号出口)","telphone":"025-84200066"},{"id":3,"name":"北大青鸟-南京中博测试","adddress":"南京市中山南路89号江苏文化大厦22F","telphone":"025-86977000"}]
=========================================
将单个实体转换成Json格式
{"id":1,"name":"北大青鸟-徐州中博","adddress":"徐州解放南路181号","telphone":"0516-85628888"}
大家,看到了吧,使用既方便又简单。Google真是强大呀,再次佩服中。。。