json数据有两种形式,一种是[],另一种是“”,第一种是数组,第二种是对象
参考JSON中的{}与[]的区别
对数组型的json数据处理:
//初始化省份数据 读取省份数据并显示到下拉框
try {
InputStream inputStream = getResources().getAssets().open("City.txt");//打开"City.txt"文件
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));//新建BufferedReader
String lines = bufferedReader.readLine();//读取文本中的数据
StringBuffer stringBuffer = new StringBuffer();
// Log.v("MainActivity", lines);
while (lines != null){
stringBuffer.append(lines);
lines =bufferedReader.readLine();
}
final JSONArray Data = new JSONArray(stringBuffer.toString());//将数据转换成JSON格式
//循环这个文件数组、获取数组中每个省对象的名字
for (int i = 0; i < Data.length(); i++){
JSONObject provinceJsonObject = Data.getJSONObject(i);
String provinceName = provinceJsonObject.getString("name");
provinceList.add(provinceName);//将数据加入省份数组中
}
对本地json数据的读取,解析。
第二种对对象型json数据处理,解析json数据,找到数据对应的key值
public void QueryCityNum(String province,String City,String Area){
String CityNum=null;
Log.i("QueryCityNum","进入QueryCityNum函数");
//打开CityNumber.txt
try{
InputStream inputStream = getResources().getAssets().open("CityNumber.txt");//打开"City.txt"文件
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));//新建BufferedReader
String lines = bufferedReader.readLine();//读取文本中的数据
StringBuffer stringBuffer = new StringBuffer();
while (lines != null){
stringBuffer.append(lines);
lines =bufferedReader.readLine();
}
// while (bufferedReader.readLine() != null){
// stringBuffer.append(lines);
lines =bufferedReader.readLine();
// }
JSONObject Data = new JSONObject(stringBuffer.toString());
// Log.i("QueryCityNum",Data.toString());
JSONObject provinceName= Data.getJSONObject("100000");
// String provinceName = Data.getString("100000");//获取省份的数据表
//搜索省份对应的key值
// provinceName.keys();
Iterator<String> it = provinceName.keys();
while(it.hasNext()){
String key = it.next();
String value = provinceName.getString(key);
if(value.equals(province)){
CityNum = key;//将找到key值赋值
Log.i("QueryCityNum", key);
}
}
//搜索市的编码
JSONObject CityName= Data.getJSONObject(CityNum);
Log.i("QueryCityNum",CityName.toString());
Iterator<String> it2 = CityName.keys();
while(it2.hasNext()){
String key = it2.next();
String value = CityName.getString(key);
if(value.equals(City)){
CityNum = key;//将找到key值赋值
Log.i("QueryCityNum", key);
}
}
//搜索区/县的编码
JSONObject AreaName= Data.getJSONObject(CityNum);
Log.i("QueryCityNum",AreaName.toString());
Iterator<String> it3 = AreaName.keys();
while(it3.hasNext()){
String key = it3.next();
String value = AreaName.getString(key);
if(value.equals(Area)){
CityNum = key;//将找到key值赋值
Log.i("QueryCityNum", key);
}
}
}catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}