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への変換にかなり慣れていません。上記のコードでわかっているのは、 を にString rawJSON = DataObjectFactory.getRawJSON(status);変換し、Status Objectログ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

StatusJSON に変換しなくても、オブジェクトから値を取得する方法を手に入れました。もちろん、これは非常に基本的なことですが、私は見落としていました。Status オブジェクトから値を取得するのに問題がある人は、これを見ることができます。

のオブジェクトを使用して、すべての値を取得できますStatus。たとえば、「status」が Status のオブジェクトである場合、status.getText() を使用してツイートのテキストを取得し、status.user() を使用してユーザーの値を取得できます。ステータス オブジェクトを少し操作するだけで、必要な値がすべて見つかります。

于 2013-07-25T09:08:43.400 に答える