2.0����Scala�ɑΉ�����Web�A�v���J���̐l�C�y�ʃt���[�����[�N�uPlay�v�ɂ��ĉ�����AWeb�A�v���̍������Љ�����A�ځB����́AJSON���������߂̃p�b�P�[�W��JSON��Scala�̑��ݕϊ��̕��@�AJsPath�̎g�����ACoffeeScript�̎g�����Ȃǂ�������܂��B
�@�O��̋L���uPlay�̃O���[�o���Ȑݒ聕spec2��BDD�ȃe�X�g�v�ł́APlay framework 2.x�i�ȉ��APlay2�j�ł̃e�X�g��@���Љ�܂����B
�@�����܂ł̘A���ŁAScala�Ŏg�����Ƃ𒆐S�ɁAPlay2�̊T�v����R���\�[���̎g�p���@�A�R���g���[����r���[�ADB�A�N�Z�X���@��e�X�g��@�ȂǁAPlay2�ɂ������{�I�ȋ@�\�ɂ��Đ������Ă��܂����B������Play2�̋@�\�́A�܂��܂�����܂��B����́A����������Play2�̂��낢��ȋ@�\���Љ�܂��B
�@�ŋ߂�HTML�̃t�H�[�����g���ĉ�ʑJ�ڂ�f�[�^�̑���M��������AAjax�Ńf�[�^�̑���M���s���A�ŏ��Ƀ��[�h���ꂽ�y�[�W�̓��e��ύX���Ă������Ƃ̕���������������܂���B
�@���̂悤�ȃA�v���́u�P��y�[�W�A�v���P�[�V�����isingle page application�j�v�Ƃ��Ă�A�T�[�o����REST�ŃA�N�Z�X�\�ȏ�Ԃŗp�ӂ��A�N���C�A���g��Ajax���g�p���ăT�[�o�ƒʐM���܂��B
�@���̏ꍇ�A����M�t�H�[�}�b�g��JSON���g�p���邱�Ƃ������̂ł͂Ȃ��ł��傤���BPlay2�ł́A�uplay.api.libs.json�v�p�b�P�[�W��JSON���������߂̃��C�u�������p�ӂ���Ă��܂��B��������́AScala�{Play2��JSON���������@���Љ�Ă����܂��B
�@JSON�`���Ń��X�|���X��Ԃ��Ă݂܂��傤�B���܂܂ł̘A���ł��g�p���Ă����ugyro�v�v���W�F�N�g�ŁA�uapp/controllers�v�ɁuJsonController.scala�v��lj����܂��B
package controllers import play.api._ import play.api.mvc._ import play.api.libs.json.Json object JsonController extends Controller { def simpleJson = Action { val result = Map("status" -> "success") val json = Json.toJson(result) Ok(json) } }
�@�V���v����JSON��Ԃ��̂ł���A��L�̂悤�ȊȒP�ȕ��@�Ŏ����ł��܂��BMap�I�u�W�F�N�g��Json.toJson�֓n���AJsValues�I�u�W�F�N�g��Ԃ��Ă��܂��B
��JsValues��Ԃ��ꍇ�AContent-Type�w�b�_�ɂ͓K�Ȓl�iapplication/json�j���ݒ肳��܂�
�@����routes�t�@�C���ɁA��L�R���g���[���̃��[�g����lj����܂��B
GET /simpleJson controllers.JsonController.simpleJson()
�@Play�R���\�[�����N�����ē�����m�F���Ă݂܂��傤�Brun�R�}���h�ŃA�v�����N�����A�uhttp://localhost:9000/simpleJson�v�ɃA�N�Z�X���Ă݂Ă��������B��ʂɎ��̂悤�Ȍ��ʂ�JSON�`���ŕԂ��Ă��܂��B
{"status":"success"}
�@��̗�ł́A�R���g���[����Scala��Map�I�u�W�F�N�g���V���A���C�Y����JSON�`���ɂ��Ă��܂��B���̕��@�ȊO�ɂ��A���̂悤��JSON�`���̕�����Ƃ��ĕԂ��Ă���肠��܂���B
val jsonStr = """{ "status": "success" }""" Ok(jsonStr).withHeaders(CONTENT_TYPE -> "application/json")
�@Json�I�u�W�F�N�g��toJson�����g�p����AScala����JSON�փf�[�^��ϊ��ł��܂��BJSON�̎d�l�ł́A������␔�l�Abool�l�Anull�A����JSON�I�u�W�F�N�g�A�z����g�p�\�ł����Aplay.api.libs.json�p�b�P�[�W�ɂ́A����JSON�\���ɑΉ������f�[�^�^�����ꂼ��܂܂�Ă��܂��B
�@�����I�u�W�F�N�g�́A���ׂāuJsValue�v�Ƃ����N���X���p������case�N���X�ɂȂ��Ă���A�C���X�^���X�����邱�ƂŁA�C�ӂ�JSON�f�[�^���\�z�ł��܂��B
�@�ł͊eJSON�I�u�W�F�N�g�ɂ��ĊȒP�ɉ�����Ă����܂��傤�B�Ȃ��A��ɂ���T���v���R�[�h�́APlay�R���\�[�����console�R�}���h�����s���Ċm�F���Ă��܂��B
�@�W���I�ȕ�����ł��BJSON�I�u�W�F�N�g���̕������\�����߂Ɏg�p���܂��B
scala> import play.api.libs.json.JsString scala> val jStr = JsString("taro")
�@JSON�I�u�W�F�N�g���ɂ����鐔�l��\���܂��B������BigDecimal�^�����̂ŁA�����⏭����n�����Ƃ��ł��܂��B
scala> import play.api.libs.json.JsNumber scala> val jNum = JsNumber(10.5)
�@true/false�̒l�����^�U�l��\���܂��B
scala> import play.api.libs.json.JsBoolean scala> val jBool = JsBoolean(true)
�@JSON�I�u�W�F�N�g���ɂ�����null��\�����܂��B
scala> import play.api.libs.json.JsNull scala> val nullObj = JsNull
�@JSON�I�u�W�F�N�g��\���A�L�[�E�o�����[�̃Z�b�g�ł��B�����Ƃ��āuSeq[String,JsValue]�v�����܂��B�Ⴆ�A�u{ "name" : "taro", "age" : 30, "enable" : true }�v�ƕ\�����JSON�́AJsObject�Ŏ��̂悤�ɕ\������܂��B
scala> import play.api.libs.json.JsObject scala> val jsObj = JsObject( "name" -> JsString("taro") :: "age" -> JsNumber(30) :: "enable" -> JsBoolean(true) :: Nil)
�@JSON�I�u�W�F�N�g�ɂ�����z���\���܂��BJsArray��Seq[JsValue]�����܂��i�z��̗v�f�͓����^�ł���K�v�͂Ȃ��ł��j�B�Ⴆ�AJSON���Łu["taro", 100, true]�v�ƕ\�����z��́A���L�̂悤�ɍ쐬�ł��܂��B
scala> import play.api.libs.json.JsArray scala> val jsArray = JsArray( JsString("taro"):: JsNumber(100) :: JsBoolean(true):: Nil)
Copyright © ITmedia, Inc. All Rights Reserved.