2016-11-24 35 views
0

我想創建一個JSON對於包含單個屬性的case類隱式讀取,但出現錯誤「Reads [Nothing] not符合預期類型「。這裏的代碼:播放框架: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 combinators不適用於單個字段的案例類。

你可以做到以下幾點:

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