关于Struts2- Gson的使用

来源:互联网 发布:高程测量数据处理软件 编辑:程序博客网 时间:2024/06/03 07:27

一、什么是Google-Gson?

:Gson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。

Gson支持任意复杂Java对象包括没有源代码的对象。它的比struts2提供的json插件的操作更加简单明了。

二 、使用Google-Gson需要什么配置?

:我们需要下载Gson.jar将它放入web项目的lib包中

三、方法简介。

:Googe-Gson提供了两种重要的方法

1.toJson(); //将一个对象转换成JSON对象

2.fromJson();//将一个JSON对象转换成一个对象

//对于这两个方法有很多的重载方法

 

四、具体实例:

Java代码  收藏代码
  1. JavaBean:  
  2.     package org.viancent.domain;  
  3.   
  4.     import java.util.Date;  
  5.   
  6.     import org.apache.struts2.json.annotations.JSON;  
  7.   
  8.     public class Person {  
  9.         private int pid;  
  10.         private String pname;  
  11.         private int page;  
  12.         private String address;  
  13.         private Date date;  
  14.               
  15.         public Date getDate() {  
  16.             return date;  
  17.         }  
  18.   
  19.         public void setDate(Date date) {  
  20.             this.date = date;  
  21.         }  
  22.   
  23.         public int getPid() {  
  24.             return pid;  
  25.         }  
  26.   
  27.         public void setPid(int pid) {  
  28.             this.pid = pid;  
  29.         }  
  30.   
  31.         public String getPname() {  
  32.             return pname;  
  33.         }  
  34.   
  35.         public void setPname(String pname) {  
  36.             this.pname = pname;  
  37.         }  
  38.   
  39.         public int getPage() {  
  40.             return page;  
  41.         }  
  42.   
  43.         public void setPage(int page) {  
  44.             this.page = page;  
  45.         }  
  46.   
  47.         public String getAddress() {  
  48.             return address;  
  49.         }  
  50.   
  51.         public void setAddress(String address) {  
  52.             this.address = address;  
  53.         }  
  54.     }  

  Action:

Java代码  收藏代码
  1. package org.viancent.action;  
  2.   
  3. import java.io.PrintWriter;  
  4. import java.lang.reflect.Type;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8. import javax.servlet.http.HttpServletResponse;  
  9. import javax.xml.crypto.Data;  
  10.   
  11. import org.apache.struts2.ServletActionContext;  
  12. import org.apache.taglibs.standard.lang.jstl.parser.Token;  
  13. import org.viancent.domain.Person;  
  14.   
  15. import com.google.gson.Gson;  
  16. import com.google.gson.reflect.TypeToken;  
  17. import com.opensymphony.xwork2.ActionSupport;  
  18.   
  19. public class GetGsonAction extends ActionSupport {  
  20.   
  21.     private String Gson; //这里是为了获取界面传过来的JSON文本  
  22.   
  23.     public String getGson() {  
  24.         return Gson;  
  25.     }  
  26.   
  27.     public void setGson(String gson) {  
  28.         Gson = gson;  
  29.     }  
  30.   
  31.     @Override  
  32.     public String execute() throws Exception {  
  33.         //创建一个集合  
  34.         List<Person> list = new ArrayList<Person>();   
  35.   
  36.         //创建一个person对象  
  37.         Person person = new Person();  
  38.         person.setPid(1);  
  39.         person.setPname("张三");  
  40.         person.setPage(15);  
  41.         person.setDate(new Date());  
  42.           
  43.         //创建一个person对象  
  44.         Person person1 = new Person();  
  45.         person1.setPid(2);  
  46.         person1.setPname("李四");  
  47.         person1.setPage(20);  
  48.         person1.setDate(new Date());  
  49.           
  50.         //将person对象添加到集合中去  
  51.         list.add(person);  
  52.         list.add(person1);  
  53.           
  54.         //创建Gson对象  
  55.         Gson gson  =  new Gson();  
  56.         //使用toJson方法将集合转换成String数组  
  57.         String result = gson.toJson(list);  
  58.           
  59.         //创建HttpServletResponse  
  60.         HttpServletResponse response = ServletActionContext.getResponse();  
  61.           
  62.         //设置编码格式,以及信息类型  及 是否有缓存的设置  
  63.         response.setContentType("application/json;charset=utf-8");  
  64.           
  65.         response.setHeader("caChe-Control""no-cache");  
  66.           
  67.         //创建PrintWriter 对象 将信息写入到Reponse中  
  68.         PrintWriter out =response.getWriter();  
  69.           
  70.         out.print(result);  
  71.           
  72.         //清空缓存  
  73.         out.flush();  
  74.           
  75.         //关闭  
  76.         out.close();  
  77.           
  78.         /*************************************测试 GSON的fromJson方法**********************************************************/  
  79.         //创建fromJson转换时需要的类型,注意对于特殊的结合需要使用这个方法,其他普通对象则可以直接使用 *.class  
  80.          Type listtype = new TypeToken<List<Person>>() {}.getType();//这里使用了一个匿名类  
  81.          //使用Gson的fromJson方法  
  82.          /* 
  83.           * 这里我们选择有两个参数的重在方法 fromJson(String,class<T>); 
  84.           *  
  85.           * String :需要转换成集合的JSON文本   
  86.           *  
  87.           * class<T> :转换集合的类型 
  88.           * */  
  89.          List<Person> lists = gson.fromJson(this.getGson(), listtype);  
  90.          //输入信息  
  91.          System.out.println(lists.get(0).getPname());  
  92.            
  93.         return null;  
  94.     }  
  95.   
  96. }             

  JSP:

Java代码  收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2.   
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.     <head>  
  6.             <script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>  
  7.     </head>  
  8.   
  9.     <body id="theBody">  
  10.     <script type="text/javascript">  
  11.     function getAllInfo() {  
  12.     $.post("/struts2/getgsons.action", {  
  13.     Gson:"[{'pid':1,'pname':'张三','page':15,'date':'2011-3-21 15:36:52'},{'pid':2,'pname':'李四','page':19,'date':'2012-3-21 15:36:52'}]"  
  14.         }, function(returnedData, status) {  
  15.             if ("success" == status) {  
  16.                 for ( var i = 0; i < returnedData.length; i++) {  
  17.                         alert(returnedData);  
  18.                 }  
  19.             }  
  20.         })  
  21.     }  
  22.     </script>  
  23.     <input type="button" value="Get All Info" onclick="getAllInfo();">  
  24.     </body>  
  25.       
  26. </html> 

json 主页 http://www.json.org

转载自:http://perfectplan.iteye.com/blog/1561953

原创粉丝点击