2

安卓 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 解析非常陌生,尤其是将事物转换为 JSON。我在上面的代码中所知道的是,将 aString rawJSON = DataObjectFactory.getRawJSON(status);转换Status Object为 a String,我可以通过记录它来查看它。

如何将其转换String为 aJSONObject或 a 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();
}
4

2 回答 2

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");
于 2013-07-24T14:11:29.893 回答
1

我有一种方法可以从Status对象中获取值,而无需将其转换为 JSON。当然这是非常基本的,我忽略了它。从 Status 对象中获取值有困难的人可以看看这个。

您可以使用 的对象获取所有值Status。例如,如果“status”是Status的一个对象,我们可以通过status.getText()获取推文的文本,通过status.user()等获取用户值。只需稍微处理一下状态对象,您就会找到所需的所有值。

于 2013-07-25T09:08:43.400 回答