BlackBerry中的JSON解析问题

时间:2010-04-01 06:16:28

标签: json parsing blackberry

我正在研究如何使用JSON-ME解析Twitter的JSON响应。

例如:

http://apiwiki.twitter.com/Twitter-Search-API-Method:-search
foo({"results":[{"profile_image_url":"http://a3.twimg.com/profile_images/762620209/drama_queen-6989_normal.gif","created_at":"Thu, 01 Apr 2010 02:35:10 +0000","from_user":"TWEETSDRAMA","to_user_id":null,"text":"NEW Twitter Lists Widget - How to put it on your blog or site http://bit.ly/47NCi6","id":11401539152,"from_user_id":95081097,"geo":null,"iso_language_code":"en","source":"<a href="http://ping.fm/" rel="nofollow">Ping.fm</a>"}... (content truncated)

这是我的方法:

public void parseDataFromJSON(String strjson) throws JSONException {
JSONTokener jtoken = new JSONTokener(strjson);
JSONArray jsoarray = new JSONArray(jtoken);
JSONObject jsobj = jsoarray.getJSONObject(0);

tweeter_profile_image_url = jsobj.optString("profile_image_url");
tweeter_created_at = jsobj.optString("created_at");
tweeter_from_user = jsobj.optString("from_user");
tweeter_to_user_id = jsobj.optString("to_user_id");
tweeter_text = jsobj.optString("text");
tweeter_id = jsobj.optInt("id"); 
tweeter_from_user_id = jsobj.optInt("from_user_id");
tweeter_geo = jsobj.optString("geo");
tweeter_iso_language_code = jsobj.optString("iso_language_code");
tweeter_source = jsobj.optString("source")
}

当我在模拟器上运行它时,没有显示任何内容,所以我检查了调试器,输出是: 状态:200 content:{“results”:[{“profile_image_url”:“http://a1.twimg.com/profile_images/746683548/Photo_on_2010- ..... --->好的,我收到了JSON内容

org.json.me.JSONException:JSONArray文本必须以{“results”的字符1处的'['开头:[{“profile_image_url .... --->但不知何故无法正确处理它。

那么如何正确解析呢?

1 个答案:

答案 0 :(得分:2)

响应本身就是一个对象,所以你只需要它来解析它:

JSONObject jsobj = new JSONObject(strjson);

这是一个带有单个键的对象,“结果”,它本身就是一个数组。所以你会做这样的事情:

JSONArray jsoarray = jsobj.getJSONArray("results");

然后“jsoarray”数组中的每个元素都将是一个JSONObject等。您可以看到不同的JSON对象是如何嵌套在一起的......