本来は、fromJson メソッドを使って、JSON のフォーマットに合った定義済みのクラスを使ってオブジェクト化しますが、もっとリアルに JSON の文字列と格闘したい時に使う方法です。 処理としては、以下の記事の続きになります。 Eclipse + JFace : HttpURLConnection で GET ※ Google gson の実装はこちら ※ オンラインドキュメントはこちら ソースコード
/** * Create contents of the application window. * @param parent */ @Override protected Control createContents(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.setLayout(null); { Button btnNewButton = new Button(container, SWT.NONE); btnNewButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { System.out.println("ボタンの処理"); HttpGet hg = new HttpGet(); String result = hg.execute( "http://localhost/basic/log_01/log.json", "utf-8" ); // String result = hg.execute(); System.out.println(result); // パーサーを取得 JsonParser jp = new JsonParser(); // 文字列をパース JsonElement je = jp.parse(result); // JsonObject を取得する JsonObject jo = je.getAsJsonObject(); // *********************************** // 最初が、唯一の "item" である事が解っており // しかもそれは配列なので、配列として取得する // *********************************** JsonArray ja = jo.getAsJsonArray("item"); // *********************************** // 配列なので、一覧表示する為のイテレータ // を作成 // *********************************** Iterator<JsonElement> it = ja.iterator(); // *********************************** // JsonElement は、どのようなフォーマット // かは、定義者次第です。 // ▼ dataset は一つ一つの項目用です // *********************************** JsonElement dataset = null; while( it.hasNext() ) { // 一つ取得( ここでは、JsonObject である事が解っています ) dataset = it.next(); // *********************************** // JsonObject から get でデータを取得します。 // 取得した時点では JsonElement ですが、 // 文字列と解っているので変換します // *********************************** String text = dataset.getAsJsonObject().get("text").getAsString(); System.out.println(text); // *********************************** // subject キーがある場合は取得します // *********************************** if ( dataset.getAsJsonObject().has("subject") ) { String subject = dataset.getAsJsonObject().get("subject").getAsString(); System.out.println(subject); } } } }); btnNewButton.setBounds(10, 10, 81, 28); btnNewButton.setText("New Button"); } return container; }
ここでは、以下のようなフォーマットである事を前提に処理を書いていますが、JSON オブジェクトの中を次々に読んでタイプをチェックしながら処理する自己呼び出しのメソッドで全ての解析は可能です。
|
【Javaの最新記事】
- Java : Apache POI で最低限の処理を標準化( ここではワークブックは新規作成 )
- Java で JSON 文字列を オブジェクトに変換する Google Gson の基本 4 パターン
- Java のコンソールで NAVER の RSS を取得して、title 部分を正規表現で加工して表示するサンプル
- Eclipse で、文字列内のファイルのパスの \ 記号を \\ にする方法
- Java : Google gson 2.3.1 で JSON 文字列を定義済みのクラスを使ってオブジェクト化
- Eclipse のホバーで追加したライブラリの javadoc を表示させる手順
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の更新(データ修正)処理
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の入力チェック
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)の二会話画面制御
- Eclipse+WindowBuilder : DBアプリケーション(社員マスタメンテ)でDBからSELECT構文で行データを読み出す
- Eclipse+WindowBuilder : ボタンイベント(AbstractAction) の作成
- Eclipse+WindowBuilder : データベースアプリケーション(社員マスタメンテ)の画面作成
- Eclipse + WindowBuilder : JDBC と ODBC を使った、オールマイティなデータベース接続サンプル( MySQL / SQLServer / Oracle / Postgr..
- Eclipse + WindowBuilder : Design タブが表示されなくなった時の対処
- Eclipse のパンくずリスト(breadcrumb) をワークスペースの設定ファイルで非表示にする
- Java : Eclipse 実行の System.in.read(buff) でコンソール入力
- iText( itextpdf-5.4.3 / Java ) で簡単に PDF 出力をする。
- SQL 文へのデータバインド用 public class GetSQL
- ADT( Android Development Tools ) Eclipse に Window Builder をインストールして Swing アプリケーションを作成する(2)
- Java : Windows の環境変数の列挙( 含ソート )