1

コンビネータhttp://www.playframework.com/documentation/2.2.x/ScalaJsonCombinatorsのドキュメントで最初の例を試してみると、repl でエラーが発生し、play アプリ内の scala ファイルで値が見つかりませんでした (試してみましたplay 2.2.0 および play 2.1.1 を使用) - repl からトレースバック:

Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :paste
// Entering paste mode (ctrl-D to finish)

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

val customReads: Reads[(String, Float, List[String])] = 
  (JsPath \ "key1").read[String](email keepAnd minLength(5)) and 
  (JsPath \ "key2").read[Float](min(45)) and
  (JsPath \ "key3").read[List[String]] 
  tupled


// Exiting paste mode, now interpreting.

<console>:16: error: not found: value tupled
        tupled
        ^
<console>:11: error: not found: value email
        (JsPath \ "key1").read[String](email keepAnd minLength(5)) and 
                       ^

scala> 

それを解決する方法は?

どうも

4

1 に答える 1

1

2 つの問題。まず、もう 1 つインポートする必要があります。

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

次に、「minLength」や「min」などの関数が一般化される前に、ドキュメントが作成され、String や Float 以外のものを処理できるようになりました。したがって、それらのタイプを指定する必要があります。

val customReads: Reads[(String, Float, List[String])] =
    (JsPath \ "key1").read[String](email keepAnd minLength[String](5)) and
    (JsPath \ "key2").read[Float](min[Float](45)) and
    (JsPath \ "key3").read[List[String]]
    tupled

これは私が読んだ議論であり、これに関して有益であることがわかりました。

play-framework Google グループ ディスカッション

于 2013-10-25T04:58:24.370 に答える