JsonValidationError(在解析对象时,List(error.expected.jsobject)

问题描述 投票:0回答:2

我在我的writes方法中将对象解析为Json,但出现错误JsonValidationError(List(error.expected.jsobject)

override def writes(o: UploadedFile): JsValue = JsObject(
  Seq("path" -> JsString(o.path.toString), "content" -> JsString(Json.stringify(Json.toJson(o.content))))
)

UploadedFile.fileContent-是作为UploadedFile的对象,并且具有自己的隐式格式化程序,

final case class UploadedFileContent(content: String)

object UploadedFileContent {
  implicit val uploadedFileContentFormat: OFormat[UploadedFileContent] = Json.format[UploadedFileContent]
}

和UploadedFile格式化程序:

object UploadedFile {

  implicit object UploadedFileFormat extends Format[UploadedFile] {
    override def reads(json: JsValue): JsResult[UploadedFile] =
      JsSuccess(
        UploadedFile(Paths.get((json \ "path").as[String]), (json \ "content").as[UploadedFileContent])
      )

    override def writes(o: UploadedFile): JsValue = JsObject(
      Seq("path" -> JsString(o.path.toString), "content" -> JsString(Json.stringify(Json.toJson(o.content))))//error is smw here
    )
  }
}

也许我需要一些东西代替Json.stringify(Json.toJson(o.content))在我的writes方法中,但我不知道到底是什么。尝试了很多变体

scala playframework play-json
2个回答
0
投票
  implicit lazy val UploadedFileFormat: OFormat[UploadedFile] = {
    ((JsPath \ "path").format[Path] ~ (JsPath \ "content")
      .format[UploadedFileContent])(UploadedFile.apply, unlift(UploadedFile.unapply))
  }

0
投票

如果UploadedFile是案例类别:

implicit val format: OFormat[UploadedFile] = Json.format
© www.soinside.com 2019 - 2024. All rights reserved.