zoukankan      html  css  js  c++  java
  • java servlet Json.org.jar

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

    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();
            }  
         
        }

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

     

  • 相关阅读:
    light oj 1105 规律
    light oj 1071 dp(吃金币升级版)
    light oj 1084 线性dp
    light oj 1079 01背包
    light oj 1068 数位dp
    light oj 1219 树上贪心
    light oj 1057 状压dp TSP
    light oj 1037 状压dp
    矩阵快速幂3 k*n铺方格
    矩阵快速幂2 3*n铺方格
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/5093587.html
Copyright © 2011-2022 走看看