• 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)

     

  • 相关阅读:
    在命令提示符中使用antlr
    Migrating to Rails 2.0.2
    从AJAX IN ACTION书中学用 RSS READER
    maple download url
    搜索
    发邀请在线RoR开发与部署环境www.heroku.com
    if can't use ruby in command line
    查询表中某字段有重复记录的个数
    WPF窗体自适应分辨率
    《思考,快与慢》
  • 原文地址:https://www.cnblogs.com/xiaoliao/p/5093587.html
Copyright © 2020-2023  润新知