他サイト更新RSSぴぽぺ速報最新記事

JavaでTwitterのJSON取得するにはどうしたらいいの?

このエントリーをはてなブックマークに追加 LINEで送る

999:名無しのプログラマー 2099/99/99 99:99:99 ID:ItSoKuHou

Javaの宿題を解いてあげるスレから。とんでもないスレということは置いておいて、けっこう面白い。
VIPやなんJが転載禁止になったことで当ブログはネタが減っています。現在のような人の少ない深夜の時間帯は様々な方向性の記事をうpしていこうかと思っています。

964: デフォルトの名無しさん 2013/12/11 22:44:38

よろしくお願いします
【 課題 】 JSONを綺麗に表示させよ(ツイートの)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】12/25

どんなツイートでもいいのでJSONで取得して
中身を表示できればおkみたいです

どのライブラリを使えばいいかもわからずjarの使い方もわからないので泣いてます
お願いします


966: デフォルトの名無しさん 2013/12/12 08:26:55

>>964
難しいな
おれも興味あるわ
誰か頼む


968: デフォルトの名無しさん 2013/12/12 16:01:20

>>966
たしかに難しいですわね
私も興味あるのでどなたか御機嫌麗しゅう


999:名無しのプログラマー 2099/99/99 99:99:99 ID:ItSoKuHou

と、このようにこの宿題は解かれずに流れていました。Javaでjson(ツイートの)を表示することができればいいとのこと。

んーーー意図がちょっとわからないので、正解かわかりませんが解いてみます。

とりあえずツイートのjsonを引っ張ってくるためにTwitter Developers読むφ(..)メモメモ
どうやら、
「https://api.twitter.com/1/statuses/oembed.json?id」
で返してくれるらしい。調度良く厨二なツイートをしていたのでこれで試してみます

”Stay hungry, Stay foolish.” なんていい言葉なんだろう

— IT速報 (@itsoku2ch) 2014, 2月 25

このツイートのjsonを表示するとこんな感じ


{"cache_age":"3153600000","url":"https:\/\/twitter.com\/itsoku2ch\/statuses\/438183889027084288","height":null,"provider_url":"https:\/\/twitter.com","provider_name":"Twitter","author_name":"IT\u901F\u5831","version":"1.0","author_url":"https:\/\/twitter.com\/itsoku2ch","type":"rich","html":"\u003Cblockquote class=\"twitter-tweet\"\u003E\u003Cp\u003E\u201DStay hungry, Stay foolish.\u201D
\u306A\u3093\u3066\u3044\u3044\u8A00\u8449\u306A\u3093\u3060\u308D\u3046\u003C\/p\u003E— IT\u901F\u5831 (@itsoku2ch) \u003Ca href=\"https:\/\/twitter.com\/itsoku2ch\/statuses\/438183889027084288\"\u003EFebruary 25, 2014\u003C\/a\u003E\u003C\/blockquote\u003E\n\u003Cscript async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"\u003E\u003C\/script\u003E","width":550}

汚いから綺麗に整形する


{
        "cache_age": "3153600000",
        "url": "https://twitter.com/itsoku2ch/statuses/438183889027084288",
        "height": null,
        "provider_url": "https://twitter.com",
        "provider_name": "Twitter",
        "author_name": "IT速報",
        "version": "1.0",
        "author_url": "https://twitter.com/itsoku2ch",
        "type": "rich",
        "html": "\u003Cblockquote class=\"twitter-tweet\"\u003E\u003Cp\u003E”Stay hungry, Stay foolish.”
なんていい言葉なんだろう\u003C/p\u003E— IT速報 (@itsoku2ch) \u003Ca href=\"https://twitter.com/itsoku2ch/statuses/438183889027084288\"\u003EFebruary 25, 2014\u003C/a\u003E\u003C/blockquote\u003E\n\u003Cscript async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"\u003E\u003C/script\u003E",
        "width": 550
}

たいした情報が入ってないjsonですが、頑張る!このjsonをJavaで取ってこなきゃいけない。HTTP通信を行わないといけないのでHttpURLConnectionを使うことに。ここらは本題じゃないので割愛。詳しくはこのあたりを参考に
HttpURLConnectionを使用してHTTP通信を行う

とりあえず書いてみた。余談ですがプログラミングでは先人がブログに貴重な情報を残しているのが常です。今回はここを参考にしました。
http://d.hatena.ne.jp/seinzumtode/20130426/1366934641


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Itsokuhou{
        public static void main(String args[]){ 
                HttpURLConnection con = null;
                StringBuilder builder = new StringBuilder();
                try {
                        URL url = new URL("https://api.twitter.com/1/statuses/oembed.json?id=438183889027084288");
                        con = (HttpURLConnection) url.openConnection();
                        con.setRequestMethod("GET");
                        con.setInstanceFollowRedirects(false);
                        //接続(´・ω・`)
                        con.connect();
        
                        BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
                        String line;
                        while ((line = reader.readLine()) != null) {
                                builder.append(line);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                //とりあえず表示してみる
                System.out.println(builder.toString());
        }
}

やっとこさ本番。jsonを扱うためにライブラリを利用したいところ。別に何を使ってもいいのですが、今回は「google-json」を使ってみることに(´・ω・`)
https://code.google.com/p/google-gson/

超大雑把に説明すると「Gson gson = new Gson();」でオブジェクトを作成してfromJsonでを使えばよさげ。まずは箱を用意


public class TwitterJson {
        String cache_age;
        String url;
        String height;
        String provider_url;
        String provider_name;
        String author_name;
        String version;
        String author_url;
        String type;
        String html;
}

ここからは超簡単。ライブラリって本当に便利ですよね☆彡オブジェクトを作って、中身を呼び出してあげるだけ。たとえば下記のように書くとユーザー名と該当ツイートのURLが表示されます


Gson gson = new Gson();
TwitterJson twj = gson.fromJson(builder.toString(),TwitterJson.class);
System.out.println("名前とうらるを表示");
System.out.println(twj.author_name);//ユーザー名
System.out.println(twj.url);//ツイートのうらる

結果

てな感じで終わり。ツイートのjsonに使い道があるのかは疑問ですが、他のjsonでも同じように取得できるのでお試しあれ。今回なんでgoogle-jsonを使ったかというと、使ったことがなかったからです。せっかくなら自分の勉強にもなったほうがいいなぁと。デシリアライズだけで言えばgoogle-jsonはイケてると思う。シリアライズは微妙

sosu



このエントリーをはてなブックマークに追加 LINEで送る
↑この記事をみんなに広めよう↑

↓ランキングクリックよろしくお願いします↓
 にほんブログ村 2ちゃんねるブログ 2ちゃんねる(ニュース)へ にほんブログ村 2ちゃんねるブログ 2ちゃんねる(ゲーム)へ

コメントをどうぞ

メールアドレス
コメント本文

  • あなたのコメントが、更にこの記事をおもしろくします。

プロフィール

PipopeFavicon

ぴぽぺ速報です。

下らないニュース、
おもしろい事件、
ゲームなど色々扱っております。
1日約70記事です。

Twitter
RSS

↓ランキングクリックよろしくお願いします↓
 にほんブログ村 2ちゃんねるブログ 2ちゃんねる(ニュース)へ にほんブログ村 2ちゃんねるブログ 2ちゃんねる(ゲーム)へ

新着情報

逆アクセスランキング

アクセスカウンター

  • 10現在の記事:
  • 1482214総閲覧数:
  • 53今日の閲覧数:
  • 162昨日の閲覧数:
  • 532070総訪問者数:
  • 39今日の訪問者数:
  • 126昨日の訪問者数:
  • 124一日あたりの訪問者数:
  • 0現在オンライン中の人数:

genzou1919 world