经过俩天的学习与实践 本次通过一个天气预报小小数据虽说仅仅只接了一组数据但大体还是了解JSON的解析的基本过程。下面就是先关解析的过程:先把解析封装成一个类:
上面是一个仅仅解析一个北京市的天气预报,其他城市的类似。尤其注意的是解析需要注册上网许可应在Androidmainfest注册:
public class JSON extends Activity
{
public static List<Map<String, String>> getJsonpath(String path) throws Exception
{
List<Map<String,String>> list =new ArrayList<Map<String,String>>();
String json=null;
Map<String, String> map;
URL url=new URL(path);
/// 利用HttpURLConnection对象,我们可以从网络中获取网页数据.
HttpURLConnection cn=(HttpURLConnection) url.openConnection();
//设置网络连接超时
cn.setConnectTimeout(5*1000);
//设置请求方式一般简单用get或post这里用get方法
cn.setRequestMethod("GET");
//得到读取的内容
InputStreamReader in=new InputStreamReader(cn.getInputStream());
//流的应用与读取
BufferedReader bu=new BufferedReader(in);
String line=bu.readLine().toString();
bu.close();
in.close();
//把字符数组转换成字符串
json=new String(line);
//这里是以对象的形式
JSONObject item1=new JSONObject(json);
//得到对象中的对象
JSONObject item=item1.getJSONObject("weatherinfo");
// System.out.println(path);
//获取对象中的每一个数值
System.out.println(json);
String name=item.getString("city");
String id=item.getString("cityid");
String temp=item.getString("temp");
String fengxiang=item.getString("WD");
String daxiao=item.getString("WS");
String wet=item.getString("SD");
String time=item.getString("time");
String isreader=item.getString("isRadar");
String Radar=item.getString("Radar");
//添加到MAP中
map=new HashMap<String, String>();
map.put("name", name);
map.put("id", id);
map.put("temp", temp);
map.put("fengxiang", fengxiang);
map.put("daxiao", daxiao);
map.put("wet", wet);
map.put("time", time);
map.put("isReader", isreader);
map.put("Rader", Radar);
list.add(map);
//测试数据
for(Map<String, String> list1:list)
{
System.out.println(list1.get("name"));
System.out.println(list1.get("id"));
System.out.println(list1.get("temp"));
System.out.println(list1.get("fengxiang"));
System.out.println(list1.get("daxiao"));
}
return list;
}
}
public class DoActivity extends Activity {
private TextView textView1=null;
private TextView textView2=null;
private TextView textView3=null;
private TextView textView4=null;
private List<Map<String, String>> list =new ArrayList<Map<String,String>>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.textView1=(TextView)findViewById(R.id.do1);
this.textView2=(TextView)findViewById(R.id.do2);
this.textView3=(TextView)findViewById(R.id.do3);
this.textView4=(TextView)findViewById(R.id.do4);
try
{
String path="http://www.weather.com.cn/data/sk/101010100.html";
//传递路径
list=JSON.getJsonpath(path);
for(Map<String,String> list1:list)
{
System.out.println(list1.get("name"));
System.out.println(list1.get("id"));
System.out.println(list1.get("temp"));
System.out.println(list1.get("fengxiang"));
System.out.println(list1.get("daxiao"));
textView1.setText("城市 :"+list1.get("name"));
textView2.setText("风向 :" +list1.get("fengxiang"));
textView3.setText(list1.get("temp"));
System.out.println(list1.get("fengxiang"));
textView4.setText(list1.get("daxiao"));
}
} catch (Exception e)
{
// TODO: handle exception
}
}
}
Activity中的代码是:
显示效果:
整体的效果就是这样 通过一个简单的解析让我们简单的对JSON的使用有一个清晰的认识!