GWTでJavaScriptを書かないAjax開発--第7回:英単語テストアプリの作成 前編 - (page 3)

沖林正紀

2007-11-28 07:00

単語帳データを受信

 テストに用いる単語帳データは、リスト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を用いると良いだろう。

 この連載は次回で最後となる。最終回は、テキストではなくオブジェクトを受信する方法を紹介しよう。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ホワイトペーパー

新着

ランキング

  1. セキュリティ

    「デジタル・フォレンジック」から始まるセキュリティ災禍論--活用したいIT業界の防災マニュアル

  2. 運用管理

    「無線LANがつながらない」という問い合わせにAIで対応、トラブル解決の切り札とは

  3. 運用管理

    Oracle DatabaseのAzure移行時におけるポイント、移行前に確認しておきたい障害対策

  4. 運用管理

    Google Chrome ブラウザ がセキュリティを強化、ゼロトラスト移行で高まるブラウザの重要性

  5. ビジネスアプリケーション

    技術進化でさらに発展するデータサイエンス/アナリティクス、最新の6大トレンドを解説

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]