SQLの窓

2015年05月04日


Java : Google gson 2.3.1 で、JSON 文字列のフォーマットが解らなくてもなんとかなる『ベタ』な処理方法

本来は、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 JSON
【Javaの最新記事】
posted by lightbox at 2015-05-04 22:30 | Java | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり