2016-11-24 4 views
0

JSON読み取りを作成しようとしていますが、単一の属性を含むケースクラスの暗黙的な読み取りですが、エラーが発生します。期待されたタイプに合致する "。ここにコードがあります:Playフレームワーク:JSON単一属性のケースクラスの読み取り

import play.api.libs.functional.syntax._ 
import play.api.libs.json.Reads._ 
import play.api.libs.json.{JsPath, Json, Reads} 

case class Feedback(message: String) 
object Feedback { 
    implicit val reads: Reads[Feedback] = (
     (JsPath \ "message").read[String](maxLength[String](2000)) 
    )(Feedback.apply _) 
} 

なぜこれは機能しませんか?ケースクラスに余分な属性を追加し、複数の.readコールをandと結合した場合、それは機能します...

答えて

3

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

次の操作を行うことができます

import play.api.libs.json.Reads._ 
import play.api.libs.json.{__, Reads} 

case class Feedback(message: String) 
object Feedback { 
    implicit val reads: Reads[Feedback] = (__ \ "message") 
    .read[String](maxLength[String](2000)).map {message => Feedback(message)} 
} 

それが原因で、現在のマクロの実装の制限のです。あなたはそれについてもっと読むことができます:Pacal is the writer of this API

関連する問題