REF:http://blog.youkuaiyun.com/zingck/article/details/7408033
首先先看一下新浪微博目前的JSON的结构
{
"statuses": [
{ //位置1
"created_at": "Tue May 31 17:46:55 +0800 2011", // 位置2
"id": 11488058246,
"text": "求关注。",
"source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
"favorited": false,
"truncated": false,
"in_reply_to_status_id": "",
"in_reply_to_user_id": "",
"in_reply_to_screen_name": "",
"geo": null,
"mid": "5612814510546515491",
"reposts_count": 8,
"comments_count": 9,
"annotations": [],
"user": { //位置3
"id": 1404376560,
"screen_name": "zaku",
"name": "zaku",
"province": "11",
"city": "5",
"location": "北京 朝阳区",
"description": "人生五十年,乃如梦如幻;有生斯有死,壮士复何憾。",
"url": "http://blog.sina.com.cn/zaku",
"profile_image_url": "http://tp1.sinaimg.cn/1404376560/50/0/1",
"domain": "zaku",
"gender": "m",
"followers_count": 1204,
"friends_count": 447,
"statuses_count": 2908,
"favourites_count": 0,
"created_at": "Fri Aug 28 00:00:00 +0800 2009",
"following": false,
"allow_all_act_msg": false,
"remark": "",
"geo_enabled": true,
"verified": false,
"allow_all_comment": true,
"avatar_large": "http://tp1.sinaimg.cn/1404376560/180/0/1",
"verified_reason": "",
"follow_me": false,
"online_status": 0,
"bi_followers_count": 215
}
},
...
],
"previous_cursor": 0, // 位置4
"next_cursor": 11488013766,
"total_number": 81655
}
将上面的数据简化一下就是下面的结构,K代表key,V代表value
{
K : [
{ // 位置1
K : V , // 位置2
K : { K : V } // 位置3
},
{ // 位置1
K : V , // 位置2
K : { K : V } // 位置3
},
......
],
K : V // 位置4
}
<p>好了,现在我们开始一点一点的去解析它</p><p>首先最外面的一层大括号{ ..... },这个应该使用JSONObject()去获取对象</p><p></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a target=_blank title="view plain" class="ViewSource" href="http://blog.youkuaiyun.com/zingck/article/details/7408033#">view plain</a><a target=_blank title="copy" class="CopyToClipboard" href="http://blog.youkuaiyun.com/zingck/article/details/7408033#">copy</a><a target=_blank title="print" class="PrintSource" href="http://blog.youkuaiyun.com/zingck/article/details/7408033#">print</a><a target=_blank title="?" class="About" href="http://blog.youkuaiyun.com/zingck/article/details/7408033#">?</a></div></div><ol class="dp-xml"><li class="alt"><span><span>JSONObject </span><span class="attribute">jsonObject</span><span> = </span><span class="attribute-value">new</span><span> JSONObject(json); </span></span></li></ol></div><pre class="html" style="display: none;" name="code">JSONObject jsonObject = new JSONObject(json);
- JSONArray statusesArr = jsonObject.getJSONArray("statuses");
JSONArray statusesArr = jsonObject.getJSONArray("statuses");
此时位置1的元素需要将其转化为JsonObject类
此时有2种办法可以转化
第一种:
- JSONObject statusesObj = statusesArr.getJSONObject(0); // 这里的0代表的就是第一个{},以此类推
JSONObject statusesObj = statusesArr.getJSONObject(0); // 这里的0代表的就是第一个{},以此类推
第二种:
- String statusesStr = statusesArr.getString(0);
- JSONObject statusesObj = new JSONObject(statusesStr);
String statusesStr = statusesArr.getString(0);
JSONObject statusesObj = new JSONObject(statusesStr);
这个时候我们就可以获取位置2的数据了
- statusesObj.getString("created_at");
statusesObj.getString("created_at");
位置3的数据又有点比较搞了,直接贴代码
- String user = statusesObj.getString("user"); // 获取位置3的值
- JSONObject userObj = new JSONObject(user); // 将其转化为JSONObject
- String name = userObj.getString("name"); // 使用get方法获取数据
String user = statusesObj.getString("user"); // 获取位置3的值
JSONObject userObj = new JSONObject(user); // 将其转化为JSONObject
String name = userObj.getString("name"); // 使用get方法获取数据
位置4的数据获取很简单,使用普通的get方法就可以获得
- jsonObject.getInt("total_number");
jsonObject.getInt("total_number");
至此,JSON数据分析完毕,大家领会这个解析的方法,基本上就可以解析新浪微博的JSON的方法了
转贴请保存源地址:http://blog.youkuaiyun.com/zingck/article/details/7408033