• 网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    简述

    开发中不可避免会遇到这样的需求,通过json作为配置文件配置app(比如本地数据库的构建等)。

    1.Json格式

    假设有这样一个需求:作为配置文件,我们设计了几种奖品用于用户抽奖。
    以一个一般的Json格式为例:

    {
      "filed": true,      //配置参数,本例不用只做示范
      "rewards": [         //奖品列表
        {
          "name": "脆脆鲨",           //奖品名称
          "probability": "0.35",     //中奖概率
          "image_res": 1,            //奖品icon
          "reward_serial": "21313133"//奖品serial,用于api请求等
        },
        {
          "name": "东方神牛",
          "probability": "0.45",
          "image_res": 2,
          "reward_serial": "21313134"
        },
        {
          "name": "旺仔牛奶",
          "probability": "0.2",
          "image_res": 3,
          "reward_serial": "21313135"
        }
      ]
    }

    2.序列化

    为了更清楚的描述,我们创建一个Reward类,用来表示这些奖品对象

    public class Reward {
        public String name;
        public float probability;
        public int imageResource;
        public String serial;
    
        public Reward(String name, float probability, int imageResource, String rewardSerial) {
            this.name = name;
            this.probability = probability;
            this.imageResource = imageResource;
            this.Serial = rewardSerial;
        }
    }

    接下来就可以解析json配置文件然后序列化为JsonObject了。

    //获取json数据
     String rewardJson = "";
     String rewardnJsonLine;
     //assets文件夹下json文件的路径->打开json文件
     BufferedReader bufferedReader = new BufferedReader(newInputStreamReader(context.getAssets().open("db/reward.json")));
     while ((rewardJsonLine = bufferedReader.readLine()) != null) {
         rewardJson += rewardJsonLine;
     }
    
    //序列化json数据
     JSONObject jsonObject = new JSONObject(rewardJson);
     boolean filed = jsonObject.getBoolean("filed"); //获得配置参数
     JSONArray rewards = jsonObject.getJSONArray("rewards");//获得奖品列表
    
    //获得序列化的奖品集合
    ArrayList<Reward> list = new ArrayList<>();
    //遍历jsonArray,将每个JsonObject转换为对应的Reward对象
    for (int i = 0, length = rewards.length(); i < length; i++) {
         JSONObject o = rewards.getJSONObject(i);
         Reward reward = new Reward(o.getString("name"),
                 Float.parseFloat(String.valueOf(o.getString("probability"))),
                 o.getInt("image_res"),
                 o.getString("reward_serial")
         );
         probability += reward.probability;
         list.add(reward);
    }
    //接下来就可以处理这些对象了(比如操作数据库,比如通过概率进行抽奖等等)~
    网赌被黑找腾龙D哥出黑【微信:JLYL78999 QQ:840093333】

    发布评论

    分享到:

    专业出黑网赌被黑追款

    我的微信号:18488351249 (左侧二维码扫一扫)欢迎添加!

    Java并发指南7:JUC的核心类AQS详解
    你是第一个吃螃蟹的人
    发表评论

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。