Android本地Json配置文件实现笔记

来源:互联网 发布:ubuntu文件服务器搭建 编辑:程序博客网 时间:2024/04/20 01:08

简述

开发中不可避免会遇到这样的需求,通过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);}//接下来就可以处理这些对象了(比如操作数据库,比如通过概率进行抽奖等等)~
1 0
原创粉丝点击