zoukankan      html  css  js  c++  java
  • 实例--post请求,完成一个抽奖程序概率的测试

    一个web项目测试,测试抽奖概率的正确性,写了一个小代码,验证概率

    post和get请求的一个工具类

    package kankan_interface;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    
    
    import com.fasterxml.jackson.annotation.JsonInclude.Include;
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    /**
     * json转换方面的工具类,全部为静态方法
     *
     */
    public class JsonUtil {
    
     //   private static final Logger logger = logger.getLogger(JsonUtil.class);
    
        private static ObjectMapper mapper = new ObjectMapper();
    
        static{
            //设置序列化配置,为null的属性不加入到json中
            mapper.setSerializationInclusion(Include.NON_NULL);
        }
        /**
         * 将对象转换成json字符串,如果转换失败则返回null
         * @param o 需要转换为json的对象
         * @return String 转换后的json字符串
         *
         *
         * */
        public static String write2JsonStr(Object o){
            String jsonStr = "";
            try {
                jsonStr = mapper.writeValueAsString(o);
            } catch (JsonProcessingException e) {
                
                //logger.error("|JsonProcessingException|", e);
            }
            return jsonStr;
        }
    
        /**
         * 将json转换为对象 如果对象模版为内部类会出现问题,所以不要使用内部类
         * @param json 要转换的json
         * @param clazz 要映射的对象
         * @return 转换成的目标对象,如果转换失败返回null
         * */
        public static Object json2Object(String json,Class<?> clazz){
            try {
                return mapper.readValue(json,clazz);
            } catch (JsonParseException e) {
                e.printStackTrace();
    //            logger.error("|JsonParseException|异常字符串|" + json, e);
            } catch (JsonMappingException e) {
                e.printStackTrace();
    //            logger.error("|JsonMappingException|异常字符串|" + json, e);
            } catch (IOException e) {
                e.printStackTrace();
    //            logger.error("|IOException|异常字符串|" + json, e);
            }
            return null;
        }
    
        /**
         * 将json字符串转换为Map
         * @param  json 需要转换为Map的json字符串 {}开头结尾的
         * @return 转换后的map 如果转换失败返回null
         * */
        @SuppressWarnings("unchecked")
        public static Map<String,Object> json2Map(String json){
            try {
                if(json==null || json.length()==0) {
                    return new HashMap<String,Object>() ;
                }
                return mapper.readValue(json,Map.class);
            } catch (JsonParseException e) {
              System.out.print(e);
                //logger.error("|JsonParseException|异常字符串|" + json, e);
            } catch (JsonMappingException e) {
                 System.out.print(e);
                //logger.error("|JsonMappingException|异常字符串|" + json, e);
            } catch (IOException e) {
                 System.out.print(e);
                //logger.error("|IOException|异常字符串|" + json, e);
            }
            return new HashMap<String,Object>() ;
        }
    
        /**
         * 将json数组转换为List<Map<String,Object>> json数组格式[{},{}]
         * @param  jsonArray 需要转换的json数组
         * @return 转换后的列表   如果转换失败返回null
         * */
        @SuppressWarnings("unchecked")
        public static List<Map<String,Object>> jsonArray2List(String jsonArray){
    //        try {
    //            return mapper.readValue(jsonArray, List.class);
    //        } catch (JsonParseException e) {
    //            logger.error("|JsonParseException|异常字符串|" +  jsonArray, e);
    //        } catch (JsonMappingException e) {
    //            logger.error("|JsonMappingException|异常字符串|" +  jsonArray, e);
    //        } catch (IOException e) {
    //            logger.error("|IOException|异常字符串|" +  jsonArray, e);
    //        }
            return new ArrayList<Map<String,Object>>();
        }
    
    }

    模拟请求,并进行抽奖换算概率

    public class Lottery {
    /**
     * @author 张君
     * @deprecated 抽奖并统计概率
     * @throws JSONException
     * @throws ParseException
     */
         // 将Json对象转换成Map
    
        public static void main(String[] args) throws JSONException, ParseException {
            // TODO Auto-generated method stub
            Map<String, String> ma=new HashMap<String, String>();
            HttpClicent HTTP=new HttpClicent();
            JsonUtil jsonUtil=new JsonUtil();
            
            Map<String,Integer> map2=new HashMap<String,Integer>();
            for(int i=0 ; i<10000 ;i++){  //1万次的抽奖概率
                String json=HTTP.dopost("XXX/?actId=NationalDay2016&loginUserId=1009406073",ma);//模拟的一个post请求
                json=json.substring(9);//取返回的json字符串,因为我们这个请求返回回来,和普通json不一样,
                json=json.substring(0,json.length()-1);
                Map<String ,Object>map=jsonUtil.json2Map(json);  //使用map就是方便现在统计有几种奖品,每个奖品的概率
                if(null!=map&&null!=map.get("rtn")&&map.get("rtn").toString().equals("0")){  
                    map=(Map<String, Object>) map.get("data");
                    if(map.get("valid").toString().equals("1")){//判断是哪个奖品
                      String key=map.get("presentId").toString();
                      if(null!=map2.get(key)){
                          map2.put(key, map2.get(key)+1);
                      }else{
                          map2.put(key, 1);
                      }
                    }
                }
            }
            for (Entry<String, Integer> entry : map2.entrySet()) {
                System.out.println("key = " + entry.getKey() + " and value = " + entry.getValue());
            }
        }
    }
  • 相关阅读:
    vue中handsontable 使用
    vue项目在APP禁止页面缩放
    SuperAgent使用文档
    echart 图表自定义样式
    vue router-link子级返回父级页面
    浏览器的多线程
    gzip压缩
    清除浮动的方法
    vue-router的hash和history模式的区别
    Docker镜像+nginx 部署 vue 项目
  • 原文地址:https://www.cnblogs.com/chongyou/p/6001825.html
Copyright © 2011-2022 走看看