2013-04-19 33 views
1

我沿着Play玩耍! 2.1海岸教程http://mandubian.com/2013/01/13/JSON-Coast-to-Coast/,但无法获得最平凡的例子。玩!无法找到参数缩减器的隐含值

当我编译我的项目,我得到一个错误:

could not find implicit value for parameter reducer: play.api.libs.functional.Reducer[play.api.libs.json.JsString,B]

我的控制器代码如下:

package controllers 

import play.api._ 
import play.api.mvc._ 

import play.api.libs.json._ 
import play.api.libs.json.Reads._ 
import play.api.libs.functional.syntax._ 

object MyController extends Controller{ 

    val validate = (
    (__ \ 'title).json.pick[JsString] and 
    (__ \ 'desc).json.pick[JsString] 
).reduce 

    def test() = Action { implicit request => 
    Ok("test") 
    } 
} 

缺少什么我得到这个工作?

回答

0

这里的语法并不完全正确。 'pick'返回一个JsValue(Play!相当于有效的Json类型,包括String,Array等)。

要验证多个json字段,你需要使用'pickBranch',它返回一个JsObject(它基本上等价于一个Map [String,JsValue])。我猜测reduce是几个JsObjects的合并操作。

我其实还没有找到一个很好的'选择'用例。 '\'语法似乎可以用较少的代码和混乱来完成相同的工作。

相关问题