Android 2.3.3
我正在将Twitter API集成到我的Android应用程序中。我正在使用Twitter4j。
我可以使用以下代码获取特定用户的推文。
Paging paging = new Paging(1, 40);
List<twitter4j.Status> statuses = twitter.getUserTimeline("xxx", paging);
Log.d(Const.TAG,"Showing Timeline.");
for (twitter4j.Status status : statuses) {
String rawJSON = DataObjectFactory.getRawJSON(status);
}
我的要求是我需要解析JSON字符串(rawJSON),以获取其他一些值,例如发布日期等。
我是JSON解析esp的新手,将事物转换为JSON。我在上面的代码中所知道的是,String rawJSON = DataObjectFactory.getRawJSON(status);
将Status Object
转换为String
,我可以通过记录来查看它。
如何将此String
转换为JSONObject
或JSONArray
?有人能为我提供示例代码吗?
我尝试了以下代码,但它提供了异常
try {
JSONObject tweet = new JSONObject(rawJSON);
JSONArray textArray = tweet.getJSONArray("text");
String text = textArray.getString(0);
Log.d(Const.TAG, "Text = "+text);
} catch (JSONException e) {
// TODO Auto-generated catch block
Log.d(Const.TAG, "Error while converting string to json");
e.printStackTrace();
}
答案 0 :(得分:6)
这是解析Twitter4j Status
的代码。这个例子得到了推文的语言。
//Status To JSON String
String statusJson = DataObjectFactory.getRawJSON(status);
//JSON String to JSONObject
JSONObject JSON_complete = new JSONObject(statusJson);
//We get another JSONObject
JSONObject JSON_user = JSON_complete.getJSONObject("user");
//We get a field in the second JSONObject
String languageTweet = JSON_user.getString("lang");
答案 1 :(得分:1)
我有办法从Status
对象获取值,而无需将其转换为JSON。当然这是非常基本的,我忽略了它。从Status对象获取值时遇到问题的人可以看一下。
您可以使用Status
的对象获取所有值。
例如,如果“status”是Status的对象,我们可以通过使用status.getText()获取推文的文本,使用status.user()等获取用户值。只需稍微处理一下状态对象,就可以找到所需的所有值。