Android学习笔记(一)之解析本地json数据

初入安卓,引导书籍是:《第一行代码》。把自己学习过程中遇到的难点(仅对于初入门的安卓学者,大牛们请勿喷)及解决方案(百度了好久)整理出来,供广大学友参考。

最近在做书中的酷欧天气cool weather,由于书中提供的城市api已失效,故需要自己另找。博主采用的是把json数据复制到txt文本中,进行本地解析。

读取文本步骤:

1.新建txt文本,把要解析的json数据复制进去。

2.Android工程目录下找到assets文件夹(assets在src/main下面,如果没有就右键main,new--folder--Assets folder,或者右键main, new--Directory,输入assets),把第一步中的txt文本复制到assets路径下

3.使用下面这行代码,就可以成功加载本地json文件。

InputStream is = getAssets().open("allChinacity.txt");//此处为要加载的json文件名称


自此完成本地json文件的加载,接下来是解析。我们需要先通过BufferedReader将文本中的内容一行一行读取出来,再使用JsonObject或者Gson进行解析。下面是代码:

    //读取assets中的文件
    private void readFromAssets() {
        try {
            InputStream is = getAssets().open("allChinacity.txt");//此处为要加载的json文件名称
            String text = readTextFromSDcard(is);
            handleCitiesResponse(text);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            Log.d("readFromAssets",e.toString());
        }
    }
    //将传入的is一行一行解析读取出来出来
    private String readTextFromSDcard(InputStream is) throws Exception {
        InputStreamReader reader = new InputStreamReader(is,"GB2312");
        BufferedReader bufferedReader = new BufferedReader(reader);
        StringBuffer buffer = new StringBuffer("");
        String str;
        while ((str = bufferedReader.readLine()) != null) {
            buffer.append(str);
            buffer.append("\n");
        }
        return buffer.toString();//把读取的数据返回
    }
    //把读取出来的json数据进行解析
    public static boolean handleCitiesResponse(String response) {
        try {

            JSONArray jsonArray = new JSONArray(response);
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String ss=jsonObject.getString("");//""内填写你要读取的数据
            }

            return true;

        } catch (Exception e) {
            Log.d("handleCitiesResponse", e.toString());
        }
        return false;
    }

至此,json解析完成。有错误之处欢迎指出探讨,谢谢!

你可能感兴趣的:(Android学习笔记)