(1/3)2.0からScalaに対応したWebアプリ開発の人気軽量フレームワーク「Play」について解説し、Webアプリの作り方を紹介する入門連載。今回は、JSONを扱うためのパッケージやJSONとScalaの相互変換の方法、JsPathの使い方、CoffeeScriptの使い方などを解説します。2.x(以下、Play2)でのテスト手法を紹介しました。ここまでの連載で、Scalaで使うことを中心に、Play2の概要からコンソールの使用方法、コントローラやビュー、DBアクセス方法やテスト手法など、Play2における基本的な機能について説明してきました。Play2の機能は、まだまだあります。今回は、そういったPlay2のいろいろな機能を紹介します。JSONを扱うためのライブラリ「play.api.libs.json」パッケージ最近はHTMLのフォームを使って画面遷移やデータの送受信をするより、Ajaxでデータの送受信を行い、最初にロードされたページの内容を変更していくことの方が多いかもしれません。application)」とも呼ばれ、サーバ側はRESTでアクセス可能な状態で用意し、クライアントはAjaxを使用してサーバと通信します。この場合、送受信フォーマットはJSONを使用することが多いのではないでしょうか。Play2では、「play.api.libs.json」パッケージにJSONを扱うためのライブラリが用意されています。ここからは、Scala+Play2でJSONを扱う方法を紹介していきます。JSONでレスポンスを返してみるJSON形式でレスポンスを返してみましょう。いままでの連載でも使用してきた「gyro」プロジェクトで、「app/controllers」に「JsonController.scala」を追加します。}}シンプルなJSONを返すのであれば、上記のような簡単な方法で実現できます。MapオブジェクトをJson.toJsonへ渡し、JsValuesオブジェクトを返しています。※JsValuesを返す場合、Content-Typeヘッダには適切な値(application/json)が設定されます次はroutesファイルに、上記コントローラのルート情報を追加します。controllers.JsonController.simpleJson()Playコンソールを起動して動作を確認してみましょう。runコマンドでアプリを起動し、「http://localhost:9000/simpleJson」にアクセスしてみてください。画面に次のような結果がJSON形式で返ってきます。{"status":"success"}上の例では、コントローラでScalaのMapオブジェクトをシリアライズしてJSON形式にしています。この方法以外にも、次のようにJSON形式の文字列として返しても問題ありません。"application/json")ScalaからJSON用のデータ型を使用するJsonオブジェクトのtoJson関数を使用すれば、ScalaからJSONへデータを変換できます。JSONの仕様では、文字列や数値、bool値、null、他のJSONオブジェクト、配列を使用可能ですが、play.api.libs.jsonパッケージには、このJSON構造に対応したデータ型がそれぞれ含まれています。これらオブジェクトは、すべて「JsValue」というクラスを継承したcaseクラスになっており、インスタンス化することで、任意のJSONデータを構築できます。各JSONオブジェクトについて簡単に解説しておきましょう。例にあるサンプルコードは、Playコンソール上でconsoleコマンドを実行して確認しています。文字列:JsString標準的な文字列です。JSONオブジェクト内の文字列を表すために使用します。JsString("taro")数値:JsNumberJSONオブジェクト内における数値を表します。引数はBigDecimal型を受け取るので、整数や少数を渡すことができます。JsNumber(10.5)真偽値:JsBooleantrue/falseの値を取る真偽値を表します。JsBoolean(true)null:JsNullJSONオブジェクト内におけるnullを表現します。JsNullJSONオブジェクト:JsObjectJSONオブジェクトを表す、キー・バリューのセットです。引数として「Seq[String,JsValue]」を受け取ります。}」と表されるJSONは、JsObjectで次のように表現されます。Nil)JSONオブジェクトの配列:JsArrayJSONオブジェクトにおける配列を表します。JsArrayはSeq[JsValue]を受け取ります(配列の要素は同じ型である必要はないです)。true]」と表される配列は、下記のように作成できます。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。