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 生成json 打zip包_java