Json是一种解析服务器数据的一种方式,与XML共为解析服务器数据的主流方式.不过相对于XML解析来说,
Json有着自己不一般的优点,轻量级,解析方便,现已成为解析数据的主流核心.
JSON解析器网址:
http://www.qqe2.com/
作用:将从服务器获取的数据复制到这个网址里面去,可以解析分类出来,便于我们对数据的解析进行分类.
JSON解析主要是层层解析,相对也比较简单.主要使用三个方法
1.要解析数组([])时,使用getJSONArray("解析的对象"),解析出来要获取里面的参数需要使用下标值
2.要解析对象({})时,使用getObject("解析的对象").
3.没有层套时,使用getString("键").来获取与键相对应的值.
详细解析方式可参考最尾的解析代码,可供参考任何JSON的解析
注:JSON解析是通过键值对的,最好不要以网址上的为准. 将解析出来的Log.i打印下
就可以看到要解析的对象的键,然后通过键来解析出值来.
返回的数组中如果需要里面的东西,有括号和数组的话,要一层层解析,
才能获取里面的数据
=========================================================
下面有两种解析方式:
HttpClient client=new DefaultHttpClient();
//此处以返回json格式数据示例,所以format=2,以根据城市名称为例,cityName传入中文
String url="
http://v.juhe.cn/weather/index?cityname="+
cityName+"&key=6e743496b56b54e803a224b2ea0ad4db";
HttpGet get=new HttpGet(url);
HttpResponse resp=client.execute(get);
//获取返回的json数组字符串
String resJson=EntityUtils.toString(resp.getEntity());
//resJson {result:ok, data:[{},{},{}]}
JSONObject obj=new JSONObject(resJson);//解析返回的json数组
String res=obj.getString("resultcode");//解析返回的json数组中的resultcode ,在当前中得到的是200
{"resultcode":"200","reason":"successed!","result":{"sk":{"temp":"29","wind_direction":"南风",
"wind_strength":"2级","humidity":"68%","time":"20:00"},"today":{"temperature":"25℃~34℃",
"weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"微风","week":"星期二","city":"东莞",
"date_y":"2015年08月04日","dressing_index":"炎热","dressing_advice":"天气炎热,建议着短衫、短裙、
短裤、薄型T恤衫等清凉夏季服装。","uv_index":"中等","comfort_index":"","wash_index":"较适宜",
"travel_index":"较适宜","exercise_index":"较适宜","drying_index":""},"future":[{"temperature":"25℃~34℃",
"weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"微风","week":"星期二","date":"20150804"}
},"error_code":0}
下面的json格式,希望得到结果是: 江苏 南京 玄武区 南京市游乐园
json格式如下:{"response":{"data":[{"address":"南京市游乐园","province":"江苏","district":"玄武区",
"city":"南京"}]},"status":"ok"}
解析:
JSONObject dataJson=new JSONObject("你的Json数据“);
JSONObject response=dataJson.getJSONObject("response");
JSONArray data=response.getJSONArray("data");
JSONObject info=data.getJSONObject(0);
String province=info.getString("province");
String city=info.getString("city");
String district=info.getString("district");
String address=info.getString("address");
System.out.println(province+city+district+address);