1. 程式人生 > >Android訪問assets本地Json檔案

Android訪問assets本地Json檔案

當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);