关于Struts2- Gson的使用
一、什么是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对象转换成一个对象
//对于这两个方法有很多的重载方法
四、具体实例:
JavaBean:
package org.viancent.domain;
import java.util.Date;
import org.apache.struts2.json.annotations.JSON;
public class Person {
private int pid;
private String pname;
private int page;
private String address;
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Action:
package org.viancent.action;
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data;
import org.apache.struts2.ServletActionContext;
import org.apache.taglibs.standard.lang.jstl.parser.Token;
import org.viancent.domain.Person;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.opensymphony.xwork2.ActionSupport;
public class GetGsonAction extends ActionSupport {
private String Gson; //这里是为了获取界面传过来的JSON文本
public String getGson() {
return Gson;
}
public void setGson(String gson) {
Gson = gson;
}
@Override
public String execute() throws Exception {
//创建一个集合
List<Person> list = new ArrayList<Person>();
//创建一个person对象
Person person = new Person();
person.setPid(1);
person.setPname("张三");
person.setPage(15);
person.setDate(new Date());
//创建一个person对象
Person person1 = new Person();
person1.setPid(2);
person1.setPname("李四");
person1.setPage(20);
person1.setDate(new Date());
//将person对象添加到集合中去
list.add(person);
list.add(person1);
//创建Gson对象
Gson gson = new Gson();
//使用toJson方法将集合转换成String数组
String result = gson.toJson(list);
//创建HttpServletResponse
HttpServletResponse response = ServletActionContext.getResponse();
//设置编码格式,以及信息类型 及 是否有缓存的设置
response.setContentType("application/json;charset=utf-8");
response.setHeader("caChe-Control", "no-cache");
//创建PrintWriter 对象 将信息写入到Reponse中
PrintWriter out =response.getWriter();
out.print(result);
//清空缓存
out.flush();
//关闭
out.close();
/*************************************测试 GSON的fromJson方法**********************************************************/
//创建fromJson转换时需要的类型,注意对于特殊的结合需要使用这个方法,其他普通对象则可以直接使用 *.class
Type listtype = new TypeToken<List<Person>>() {}.getType();//这里使用了一个匿名类
//使用Gson的fromJson方法
/*
* 这里我们选择有两个参数的重在方法 fromJson(String,class<T>);
*
* String :需要转换成集合的JSON文本
*
* class<T> :转换集合的类型
* */
List<Person> lists = gson.fromJson(this.getGson(), listtype);
//输入信息
System.out.println(lists.get(0).getPname());
return null;
}
}
JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="WEB-JS/jquery-1.5.1.js"></script>
</head>
<body id="theBody">
<script type="text/javascript">
function getAllInfo() {
$.post("/struts2/getgsons.action", {
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'}]"
}, function(returnedData, status) {
if ("success" == status) {
for ( var i = 0; i < returnedData.length; i++) {
alert(returnedData);
}
}
})
}
</script>
<input type="button" value="Get All Info" onclick="getAllInfo();">
</body>
</html>
Gson下载地址:
http://code.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.1-release.zip
本文介绍了如何使用Google-Gson库进行Java对象与JSON之间的相互转换,并通过具体示例展示了Struts2框架下Gson的实际应用过程。
1589

被折叠的 条评论
为什么被折叠?



