当App需要固定json数据时如,国家城市列表,可以将json数据制作为本地Json文件存入assets文件夹下,生成apk文件时
1.assets文件与java/res文件夹同级,都在main文件夹下。
在main文件夹下新建assets文件,然后再assets文件中新建test.json文件夹,将Json数据复制到test.json文件中,具体如下
2.访问json文件
编写一个本地json文件解析的工具类LocalJsonResolutionUtils
assets中的文件无法直接访问,可以使用AssetManager访问。
/** * 得到json文件中的内容 * @param context * @param fileName * @return */ public static String getJson(Context context,String fileName){ StringBuilder stringBuilder = new StringBuilder(); //获得assets资源管理器 AssetManager assetManager = context.getAssets(); //使用IO流读取json文件内容 try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( assetManager.open(fileName),"utf-8")); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); }
使用Gson将Json字符串转换为对象
/** * 将字符串转换为 对象 * @param json * @param type * @return */ public static <T> T JsonToObject(String json, Class<T> type) { Gson gson =new Gson(); return gson.fromJson(json, type); }
3.工具的使用
//得到本地json文本内容 String fileName = "test.json"; String foodJson = LocalJsonResolutionUtils.getJson(mActivity, fileName); //转换为对象 FoodCategoryBean foodCategoryBean = LocalJsonResolutionUtils.JsonToObject(foodJson, FoodCategoryBean.class);