簡體   English   中英

Play 框架:單屬性案例類的 JSON 讀取

[英]Play framework: JSON Reads for a single-attribute case class

我正在嘗試為包含單個屬性的 case 類創建一個隱式的 JSON Reads,但我收到錯誤“Reads[Nothing] 不符合預期類型”。 這是代碼:

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它可以工作......

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 是此 API 的作者

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM