1.2.6 在Java中使用JSON(1)
1. Gson概述
Gson是谷歌的一个开源项目,其作用是在Java对象和JSON之间实现相互转换。大家可登录http://code.google.com/p/google-gson/下载***版本,本书使用的版本是1.6版,本节的示例都将使用该版本。
Gson的功能很多,这里囿于篇幅就不一一介绍了。本节的重点是讲述如何使用Gson生成Ext JS格式的返回数据。
2. 配置Gson
要使用Gson,将gson-1.6.jar文件复制到项目的“lib”目录就行了。譬如在动态Web项目中使用Gson,将文件复制到“\WebContent\WEB-INF\”下的lib目录即可。
要引用Gson,需在引用文件中加入以下代码:import com.google.gson.*;
你也可以根据需要细化引用。
3. 使用Gson
要生成1.2.5节中介绍的JSON格式数据,需要使用JsonObject和JsonArray两个对象,这两个对象的详细说明如表1-2所示。
表1-2 JsonObject与JsonArray的详细说明
这两个对象是如何使用的,请看下面的代码:StringconnectionUrl="jdbc:sqlserver://192.168.0.254:1433;"+
"databaseName=Northwind;;user=sa;password=abcd-1234";
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
try {
//使用JDBC从数据库获取数据Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection(connectionUrl);
StringSQL="SELECT CustomerID,CompanyName,ContactName "+
"FROM Customers order by CompanyName";
stmt=con.createStatement();
rs=stmt.executeQuery(SQL);
intcount=0; //计算记录总数
//构建数据列表
JsonArrayarray=newJsonArray();
while (rs.next()) {
//构建每行数据对象
JsonObjectobj=newJsonObject();
obj.addProperty("id", rs.getString("CustomerID"));
obj.addProperty("cpname", rs.getString("CompanyName"));
obj.addProperty("contactName", rs.getString("ContactName"));
array.add(obj);
count++;
}
//构建返回格式数据
JsonObjectjson=newJsonObject();
json.addProperty("totals", count);
json.add("rows", array);
response.getWriter().write(json.toString());
rs.close();
}
catch (Exception e) {
response.getWriter().write(e.getMessage());
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
代码中,注释“构建数据列表”之前的代码是实现数据库查询数据的,而我们的重点是JSON,所以我们的关注点是注释下面的代码。因为Gson不支持LINQ to JSON,所以我们必须一步步地构建JOSN数据。
首先创建一个JsonArray对象,准备在循环中插入数据。在while循环中,每行数据就是一个JsonObject对象,因而要创建新的JsonObject对象,然后使用addProperty方法将每列数据添加到JsonObject对象中,***是将这个JsonObject对象使用JsonArray的add方法添加到数组中。这样,要返回的数据列表就构建完成了。
***一步就是构建最外层的JsonObject对象,这个步骤比较简单。首先是使用addProperty方法添加记录总数,然后使用add方法将JsonArray对象作为“rows”的值添加到JsonObject对象中,***使用toString方法转换成字符串返回客户端。在这里要注意JsonObject对象的addProperty方法和add方法的区别,addProperty方法是用来添加原生数据类型的,而add方法是用来添加JsonElement(包括JsonObject、JsonArray、JsonPrimitive和JsonNull)对象的,详细的说明可阅读Gson的API。
【责任编辑:book TEL:(010)68476606】
点赞 0