単語帳データを受信
テストに用いる単語帳データは、リスト1をアプリケーション起動時に一括して受信する。初めに"fruits"というジャンルがプロパティ名として記され、そのプロパティの値が実際のデータ(配列)となっている。
リスト1 受信するJSON形式のデータ
{ "fruits" : /* ジャンル(プロパティ名) */
[ /* 単語帳データ(配列) */
{ "japanese" : "りんご" , "english" : "apple" },
{ "japanese" : "みかん" , "english" : "orange" },
{ "japanese" : "もも" , "english" : "peach" },
{ "japanese" : "いちご" , "english" : "strawberry" },
{ "japanese" : "パパイヤ", "english" : "papaya" }
]
}
JSONデータを取得する例をリスト2に示す。JSONParser、JSONValue、JSONExceptionは、JSON形式のデータを扱うためのクラスで、com.google.gwt.json.clientパッケージに属している。
JSONValueオブジェクトは、JSONParserによる解析によって得られるもので、それが{〜}で表されたオブジェクトならisObject()によりJSONObjectにキャストし、[〜]で表された配列であればisArray()でJSONArrayにキャストして利用する。
リスト2 ResponseTextHandlerによるJSONデータの取得(例)
String genre = "fruits"; // ジャンル
JSONArray dictionary; // 単語帳データ
// ....................
HTTPRequest.asyncGet( "リスト1をリクエストするURL", new ResponseTextHandler() {
public void onCompletion( String responseText ) {
try {
// テキストをJSON形式として解析
JSONValue value = JSONParser.parse( responseText );
// 特定ジャンルのデータを抽出
dictionary = value.isObject().get( genre ).isArray();
} catch ( JSONException ex ) {
// 例外処理
}
}
}
);
リスト2で取得したJSONデータから、さらに出題するデータを抽出する方法をリスト3に示す。単語帳データはJSONArrayオブジェクトなので、get()で要素を順に取得する。その要素はJSONObjectオブジェクトだ。ここからさらにjapanese、englishというプロパティの値を取得する。それぞれ問題として表示される日本語と、答えとなる英単語だ。
リスト3 出題するデータの抽出(例)
int current = 0;
// ....................
// 配列から単語データを抽出
JSONObject word = dictionary.get( current++ ).isObject();
// 画面に表示する日本語
String japanese = word.get( "japanese" ).isString().stringValue();
// 答えとなる英単語
String english = word.get( "english" ).isString().stringValue();
// 最後までたどり着いたら最初の問題に戻る
if ( current >= dictionary.size() ) current = 0;
日本語は画面に表示させて設問とする。英単語は、表示させないLabelのテキストに代入しておき、フォームに入力された内容と照合すればよい。画像の切り替えはSimplePanelを用いると良いだろう。
この連載は次回で最後となる。最終回は、テキストではなくオブジェクトを受信する方法を紹介しよう。
関連情報
-
GWT向け時系列グラフ表示ツール「Chronoscope」初リリース
Timepediaは11月13日、Google Web Toolkit向け時系列グラフ表示ツール「Chronoscope」をリリースした。マウスを用いた操作でデータを直感的にスクロールしたり、ズームしたりして閲覧することが可能になる。 - WebKit、HTML 5のローカルストレージ規格をサポート
- Googleが考える「iPhone向けアプリケーション」:GWT Feed Reader
- グーグル、Ajaxツールキット「Google Web Toolkit」をオープンソース化へ
- グーグル
「経営が知るべきバズワード」 の新着情報
-
ファーストリテイリングCIOが考える「CIOの資質」とは
2008年9月3日、「JUASスクエア『ITガバナンス2008』」が開催された。初日に行われたパネルディスカッションでは、ファースト... - レッドハット、仮想化企業Qumranetを買収
- OLPC、「Give One, Get One」プログラムを再開
- 企業ITの船長は誰? 何を頼りに船を進める?
- グーグルが「Chrome」を作った理由--高速ブラウジングがもたらす利益
- 経営が知るべきバズワード 一覧へ »
「GWTでJavaScriptを書かないAjax開発」 のバックナンバー
-
GWTでJavaScriptを書かないAjax開発--第8回:英単語テストアプリの作成 後編
今回は英単語テストアプリで単語帳データを問題オブジェクトとして受信するAjaxアプリを構築しよう。 -
GWTでJavaScriptを書かないAjax開発--第6回:イベント処理の組み込み
-
GWTでJavaScriptを書かないAjax開発--第5回:ウィジェットを表示するパネル
-
GWTでJavaScriptを書かないAjax開発--第4回:ウィジェットの表示
-
GWTでJavaScriptを書かないAjax開発--第3回:国際化対応コンテンツの作成
- GWTでJavaScriptを書かないAjax開発 一覧へ »
ホワイトペーパー
ZDNet Japan Essential Topic
-
【今注目のIT企業は何を考える…??】
オススメIT系求人情報も毎週月曜日更新! -
コラボレーション基盤特集
Notes置換とバージョンアップの情報はこちら
企画特集
[PR]
-
APC SOLUTIONS FORUM 2008をレポート
電源、冷却の効率化によるエネルギー削減とは? -
サーバ仮想化・グリーン化の利点を最大化!
そ多機能・高価値なNetAppストレージの秘密とは -
ZDNet Japan ホスティング特集
2008年夏のホスティングサービスのトレンドは何? -
ZDNet Japan Green IT
サミットだけでは終わらせない!エンタープライズの取り組みはこれからだ! -
セキュリティ対策レベルテスト公開!
自社のセキュリティのウイークポイントはドコ? -
Webセキュリティ特集
Web2.0時代の脅威へ対抗するためのソリューションとは? -
ログ管理ソリューション特集
セキュリティ、コンプライアンス対策で注目度アップ! -
Techno Exchange
RackableとCTCの地球にやさしい関係 -
「シンプル」&「低コスト」な運用管理
IT運用管理に関するアンケート実施中! -
【ログ管理】Logstorage、SecureEagle/SIM
内部統制のためのソリューションを紹介! -
Secure Web
Web2.0時代にプロアクティブなセキュリティを実現!! -
IronPort Sシリーズ
Webからの脅威に関する課題の3つの解決方法
ZDNet Japan イベント
- 開催日:2008年9月29日(月)
- イベント一覧へ»