初入安卓,引导书籍是:《第一行代码》。把自己学习过程中遇到的难点(仅对于初入门的安卓学者,大牛们请勿喷)及解决方案(百度了好久)整理出来,供广大学友参考。
最近在做书中的酷欧天气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文件名称
//读取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解析完成。有错误之处欢迎指出探讨,谢谢!