Android訪問assets本地Json檔案
阿新 • • 發佈:2019-02-08
當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();使用Gson將Json字串轉換為物件//使用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(); }
/** * 將字串轉換為 物件 * @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);