36

Play 2.1 の読み取りは、Json をオブジェクトにマーシャリングするために使用されます。しかし、ケース クラスにフィールドが 1 つしかない場合、どうすればよいでしょうか。1 つのフィールドで「and」が使用されないため、より多くのフィールドで機能するイデオムは機能しません。したがって、FunctionBuilder を取得できません。

次のコードは、型の不一致を示しています。どうすればこれを修正できますか?

case class Data(stamm: Seq[String])


implicit val dataReads  = (
  (__ \ "stamm").read(Reads.list[String])
)(Data)
4

4 に答える 4

30

Json コンビネータは、単一フィールド ケース クラスでは機能しません。

Pascal (この API の作成者) は、この状況をここで説明してい ます https://groups.google.com/forum/?fromgroups=#!starred/play-framework/hGrveOkbJ6U

次のようないくつかの回避策があります。

case class A(value: List[Int])
val areads = (__ \ 'value).read[List[Int]].map{ l => A(l) } // covariant map
于 2013-02-07T16:59:15.197 に答える
1

受け入れられているものよりもさらに簡単なソリューション:

case class A(value: String)
val reads = (__ \ "key").read[String].map(A.apply)
于 2016-05-01T00:28:04.973 に答える