play.api.libs.json.Format 的实例在隐式范围内对 scala.Char 不可用
No instance of play.api.libs.json.Format is available for scala.Char in the implicit scope
我有一个案例class:
case class Status(cmpId: String, stage: String, status: String, outputPath: String, message: String, delimiter: Char = ',')
我正在使用:"com.typesafe.play" %% "play-json" % "2.7.2"
并编写了以下格式:
implicit val formats = DefaultFormats
implicit val emStatusFormat =Json.format[EmStatus]
但仍然出现错误:
No instance of play.api.libs.json.Format is available for scala.Char in the implicit scope
谁能帮我解决这个问题。
您尝试转换这种格式:
Status("cmpId value", "stage value", "status value", "outputPath value", "message value", ',')
进入JSON.
播放 JSON(带格式生成)希望将其转换为:
{
"cmpId": "cmpId value",
"stage": "stage value",
"status": "status value",
"outputPath": "outputPath value",
"message": "message value",
"delimiter": ???
}
确切 - Char
应该如何编码?是单个字符String
吗?它是 1 字节大小的整数吗?这没有共同的约定,这就是为什么 Play JSON 没有为此提供任何编解码器。
但是你可以:
import play.api.libs.json.Format
implicit val charFormat: Format[Char] = ... // your implementation
提供后编译成功
您可以:
- 手写:
implicit val charFormat: Format[Char] = new Format[Char]{
/* implement required methods */
}
- 使用另一个编解码器生成它
import play.api.libs.functional.syntax._
implicit val charFormat: Format[Char] = implicitly[Format[String]].inmap[Char](_.head, _.toString)
我有一个案例class:
case class Status(cmpId: String, stage: String, status: String, outputPath: String, message: String, delimiter: Char = ',')
我正在使用:"com.typesafe.play" %% "play-json" % "2.7.2"
并编写了以下格式:
implicit val formats = DefaultFormats
implicit val emStatusFormat =Json.format[EmStatus]
但仍然出现错误:
No instance of play.api.libs.json.Format is available for scala.Char in the implicit scope
谁能帮我解决这个问题。
您尝试转换这种格式:
Status("cmpId value", "stage value", "status value", "outputPath value", "message value", ',')
进入JSON.
播放 JSON(带格式生成)希望将其转换为:
{
"cmpId": "cmpId value",
"stage": "stage value",
"status": "status value",
"outputPath": "outputPath value",
"message": "message value",
"delimiter": ???
}
确切 - Char
应该如何编码?是单个字符String
吗?它是 1 字节大小的整数吗?这没有共同的约定,这就是为什么 Play JSON 没有为此提供任何编解码器。
但是你可以:
import play.api.libs.json.Format
implicit val charFormat: Format[Char] = ... // your implementation
提供后编译成功
您可以:
- 手写:
implicit val charFormat: Format[Char] = new Format[Char]{ /* implement required methods */ }
- 使用另一个编解码器生成它
import play.api.libs.functional.syntax._ implicit val charFormat: Format[Char] = implicitly[Format[String]].inmap[Char](_.head, _.toString)