実用の場合は、JSON に対応するクラスを作成してデシリアライズするはずですが、てっとりばやく処理するのならこちらのほうが簡単です。 ※ データは、Twitter のデータを使っていますが、Array が無かったのでこのコードでは対応していません。
package winofsql.jp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Iterator; import java.util.Map; import java.util.Set; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("開始"); String json_string = "{ \"姓\": \"山田\", \"名\": \"太郎\", \"age\": 53 }"; test.print_json(json_string,1); json_string = ""; try { // ターゲット URL url = new URL("http://textt.net/sworc/20120924055943.txt"); // 接続オブジェクト HttpURLConnection http = (HttpURLConnection)url.openConnection(); // GET メソッド http.setRequestMethod("GET"); // 接続 http.connect(); // EUC-JP でリーダーを作成 InputStreamReader isr = new InputStreamReader(http.getInputStream(), "UTF-8"); // 行単位で読み込む為の準備 BufferedReader br = new BufferedReader(isr); String line_buffer; // BufferedReader は、readLine が null を返すと読み込み終了 while ( null != (line_buffer = br.readLine() ) ) { // コマンドプロンプトに表示 json_string += line_buffer; } // 各々受け持ちクラスを閉じる br.close(); isr.close(); http.disconnect(); } catch( Exception e ) {} System.out.println("★-->"); test.print_json(json_string,2); } private static void print_json( String json_string, int type ) { // パーサーを取得 JsonParser jp = new JsonParser(); // 文字列をパース JsonElement je = jp.parse(json_string); // key と value を取得する為に、JsonObject から、entrySet メソッドを実行 Set<Map.Entry<String, JsonElement>> entrySet = je.getAsJsonObject().entrySet(); // イテレータを取得 Iterator<Map.Entry<String, JsonElement>> it = entrySet.iterator(); // 一覧表示 while(it.hasNext()) { Map.Entry<String, JsonElement> entry = it.next(); String key = entry.getKey(); JsonElement value = entry.getValue(); System.out.print(key+" : "); if ( value.isJsonObject() ) { System.out.println("★-->"); print_json( value.toString(), 2 ); } else { if ( value.isJsonNull() ) { System.out.println("NULL"); } else { System.out.println(value.getAsString()); } } // value.toString() だと、個別の文字列の場合 " で挟まれた文字列が取得されました } if ( type == 1 ) { // *************************************** // メンバ名で値を取得 // *************************************** JsonObject jo = je.getAsJsonObject(); System.out.println(jo.get("姓").getAsString()); System.out.println(jo.get("名").getAsString()); System.out.println(jo.get("age").getAsInt()); } else { System.out.println("<--★"); } } }
▼ 結果
開始 姓 : 山田 名 : 太郎 age : 53 山田 太郎 53 ★--> id : 91500526 profile_background_tile : false notifications : false profile_sidebar_fill_color : FFF7CC location : 大阪府 screen_name : sworc profile_image_url : http://a0.twimg.com/profile_images/2388651010/zmq5cwm5nsvngpfrtr3f_normal.png contributors_enabled : false utc_offset : 32400 time_zone : Osaka is_translator : false default_profile : false profile_background_color : 000000 name : night w?lker geo_enabled : false lang : ja protected : false profile_background_image_url : http://a0.twimg.com/profile_background_images/59645045/bbs_img_4598c0b36c78d.jpg id_str : 91500526 listed_count : 6 profile_link_color : FF0000 follow_request_sent : false description : 絵を描くプログラマ。好きな食べ物は水餃子。手書きブログ。DAZ3D。GIMP。Three.js。フリーフォントで簡単ロゴ作成 http://lightbox.on.coocan.jp/html/fontImage.php http://goo.gl/HDqTM profile_use_background_image : true following : false profile_text_color : 0C3E53 url : http://winofsql.jp/ friends_count : 25 profile_background_image_url_https : https://si0.twimg.com/profile_background_images/59645045/bbs_img_4598c0b36c78d.jpg created_at : Sat Nov 21 04:24:25 +0000 2009 default_profile_image : false profile_sidebar_border_color : F2E195 verified : false status : ★--> in_reply_to_status_id_str : NULL geo : NULL place : NULL created_at : Sun Sep 23 16:49:33 +0000 2012 in_reply_to_user_id_str : NULL retweeted : false in_reply_to_screen_name : NULL truncated : false possibly_sensitive_editable : true possibly_sensitive : false id_str : 249913404016427008 contributors : NULL in_reply_to_status_id : NULL in_reply_to_user_id : NULL favorited : false source : <a href="http://winofsql.jp/" rel="nofollow">TwitLink</a> coordinates : NULL id : 249913404016427008 retweet_count : 0 text : 家に持ち帰った mdb で簡単に php からアクセスしてテストプログラムを作る( DBクラス付き ) http://t.co/bDzKDGLY <--★ favourites_count : 1 statuses_count : 6120 profile_image_url_https : https://si0.twimg.com/profile_images/2388651010/zmq5cwm5nsvngpfrtr3f_normal.png followers_count : 55 <--★
タグ:JSON
|
【java : 通信関連の最新記事】
- Java : WEB上のテキストファイルを取得する
- Java11 + Visual Studio Code + JavaMail( with JavaBeans Activation Framework )
- Javamail で IMAP 受信
- OkHttp v3.8.0 jar( と okio 1.13.0.jar ) を Eclipse のプロジェクトに追加して一般的な POST 送信を行う
- java をコマンドプロンプトからビルドして実行するサンプル。( メール送信が初心者には楽しいはず )
- Eclipse + JFace : HttpURLConnection で GET
- javamail でメール送信と、付属のバッチビルド用のスクリプトの解説
- Java : バッチでテストする Twiiter API の『検索処理』
- google-gson(Java) を使って、JSON を 定義済みクラスのオブジェクトに一括変換する
- Java : RSS(Document) から、item の中の先頭の指定した要素の値を取得するクラス
- java : Apache commons-net-3.0.1 を使ってごく自然に FTPS(セキュア) でファイルのアップロード/ダウンロード
- javamail 1.4.4 : IMAP で、ユーザから別のユーザへメッセージを全て(範囲指定で)コピーする
- javamail 1.4.4 : IMAP のメール受信イベントでメールを受け取ったら処理を行う
- Java : WEB 上の XML データの内容を取得する