设为首页    加入收藏
                 
徐州北大青鸟高中、中专、职高生就业解决方案 在职、转行、待业人员就业方案 北大青鸟中博校区环境 徐州中博大学生就业方案 校区周边环境
您的位置:首页 - 编程技巧   

google提供的JSON框架
作者:侯明强 出处:原创 时间:2011-03-21
google提供的JSON框架

原创作者:北大青鸟徐州中博-侯明强

声明:该文章的版权属于北大青鸟-徐州中博所有,欢迎任何网站转载本文,但必须申明出处,否则必将追究法律责任!

 

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,"北大青鸟-南京中博","南京市白下区建邺路663(张府园地铁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":"南京市白下区建邺路663(张府园地铁3号出口)","telphone":"025-84200066"},{"id":3,"name":"北大青鸟-南京中博测试","adddress":"南京市中山南路89号江苏文化大厦22F","telphone":"025-86977000"}]

=========================================

将单个实体转换成Json格式

{"id":1,"name":"北大青鸟-徐州中博","adddress":"徐州解放南路181","telphone":"0516-85628888"}

 

 

大家,看到了吧,使用既方便又简单。Google真是强大呀,再次佩服中。。。

 

>>更多新闻
相关新闻
Google加入Adobe阵营 力挺Flash Player Google加入Adobe阵营 力挺Flash Player
Google英国负责人:非Facebook社交网也能成功 Google英国负责人:非Facebook社交网也能成功
Google考虑推出Chrome OS自主品牌机 Google考虑推出Chrome OS自主品牌机
硅谷故事:不同于Google的另一种搜索 硅谷故事:不同于Google的另一种搜索
Google拟明年在日本推电子书服务 Google拟明年在日本推电子书服务
 
在线报名
  • 姓     名:*
  • Q       Q:*
  • 电     话:*
  • 地     址:*
在线咨询  
中心简介
校区简介
校区环境
关于北大青鸟
特色优势
常见问题解答
网站地图
 
ACCP5.0 课程咨询
ACCP软件工程师课程
什么是ACCP
ACCP5.0课程介绍
各课程定位与特色
各阶段课程
教学模式
ACCP5.0课程体系
ACCP认证证书
 
中博教育客服在线
©徐州北大青鸟 隐私政策
学费咨询
学历咨询
专业咨询
订座试听
就业咨询
课程咨询
测试认证
软件认证