java servlet Json.org.jar

时间:2023-03-08 16:55:54

本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

https://www.baiydu.com

servlet我们可以把他当成一个数据媒介,他最终执行的是将方法体内获取处理后的数据,返回给请求的客户端,或以XML格式,或以JSON格式 ,我这里是使用的JSON格式数据,所以下面我要说org.json.jar这个库及我封装的返回数据的方式。

这个库有两个核心类->JsonObject 和JsonArray

一、JsonObject 

JsonObject 这个类就相当于IOS中的NSDictionary,转换后是以键值对的方式将数据呈现给客户端调用人员,当然这里我们返回的是JSON字符,所以我们需要先将JsonObject .toString()一下,然后IOS就可以将这个JSON字符串转换成 字典NSDictioanry,然后就以键值对方式取值(如:NSString *name=[NSDictionary objectForKey("name")],由于android就是用java开发的,所以android开发人员可以直接使用这个类,将获取的json字符串反转回去成JsonObject 类取值(String name=JsonObject.get("name"))

下面我贴数据库ResultSet转换成JSonObject的方法,这里有个重点就是JsonObject接受的其实是一个对象,他不是数组集合,所以这里如何数据库返回的

ResultSet有多条数据他只能将第一条数据转换为它的,其实你可以把JSonArray当成一个JAVA中的泛型集合,他存放的类就是JSonObject类.
public static JSONObject resultSetToJsonObject(ResultSet rs) throws SQLException,JSONException
{
// json对象
JSONObject jsonObj = new JSONObject();
// 获取列数
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
// 遍历ResultSet中的每条数据
if (rs.next()) {
// 遍历每一列
for (int i = 1; i <= columnCount; i++) {
String columnName =metaData.getColumnLabel(i);
String value = rs.getString(columnName);
jsonObj.put(columnName, value);
}
}
return jsonObj;
}

二、JsonArray

 JsonArray 这个类就相当于IOS中的NSArray,转换后是以集合方式将数据呈现给客户端调用人员,当然这里我们返回的是JSON字符,所以我们需要先将JsonArray .toString()一下,然后IOS就可以将这个JSON字符串转换成 字典NSArray,然后用循环遍历集合中的每一个成员,(如:for(int i=0;i<NSArray.count;i++)
{
   NSDictionary *dic=[NSArray objectAtIndex:i];

NSString *name=[dic objectForKey("name")];

}
,由于android就是用java开发的,所以android开发人员可以直接使用这个类,将获取的json字符串反转回去成JsonArray 然后遍历取值:

for(int i = 0; i <JsonArray.length; i++) {//遍历JSONArray

JSONObject oj = JsonArray.getJSONObject(i);

String name=oj.get("name");

}

其实JSonArray里面的成员就是JSonObject,这里还可以创建类来接受值,ADD到List<>里面去做一个泛型集合.

下面我贴数据库ResultSet转换成JSonObject的方法

    public static JSONArray resultSetToJsonArry(ResultSet rs) throws SQLException,JSONException
{
// json数组
JSONArray array = new JSONArray(); // 获取列数
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount(); // 遍历ResultSet中的每条数据
while (rs.next()) {
JSONObject jsonObj = new JSONObject(); // 遍历每一列
for (int i = 1; i <= columnCount; i++) {
String columnName =metaData.getColumnLabel(i);
String value = rs.getString(columnName);
jsonObj.put(columnName, value);
}
array.put(jsonObj);
} return array;
}

三、组合一个能公用的JSon

     我现在是这样的组合的,转换的JSON字符串是从一个JsonObejct转换去的,JSonObject里面有put了两个队值,一个类型是JsonObject,另一个就是列表数据

JsonArray,当然这个只是我的组合方式,这个组合最好是根据项目的实际需求来,

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
String[] mysqlParameter=new String[]{};
ResultSet returnData=MySqlHepler.executeQuery("select * from infosheet", mysqlParameter);
JSONArray array;
try {
//JSON最外层的JsonObject
JSONObject masterJsonObject=new JSONObject();
//JSon内部的列表数据->这里的数据是从数据库返回的
array=ResultToJsonTool.resultSetToJsonArry(returnData);
//这里另一个存放子数据的JSonObject我暂时就自己随便组合了
JSONObject songJsonObject=new JSONObject();
songJsonObject.put("Token", "12345678");
songJsonObject.put("userName", "xiaoming");
songJsonObject.put("userType", "2");
//将列表数据和子JsonObjectput到masterJsonObject
masterJsonObject.put("dataList", array);
masterJsonObject.put("shareObject",songJsonObject);
out.println(masterJsonObject.toString());
} catch (SQLException | JSONException e1) { e1.printStackTrace();
} }

java servlet Json.org.jar

本人做的一款androidApp,积分墙下载可兑支付宝红包,无广告看最新国内外大片,各种当前热门H5页游,淘宝天猫高额购物券!!:扫描下载,多谢支持!若有需要做此类产品的可以联系我:2819936788,各类数据API接口!(手机/流量/QB/游戏/淘宝客高额优惠券/超便宜的代理IP API/产品推广工具API)

 java servlet Json.org.jar