рдпрджрд┐ рджрд┐рдирд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдиреНрдХреЛрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рдХ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ
[error] /home/jilen/workspace/jfc-test/src/main/scala/Foo.scala:26: diverging implicit expansion for type io.circe.Encoder.Secondary[this.Out]
[error] starting with method encodeCaseClass in trait GenericInstances
рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ?
import io.circe._
import io.circe.generic.auto._
import io.circe.syntax._
import java.util.Date
case class Foo(
date: Date,
number: Int,
str: String)
object App {
def encodesDate(fmt: String): Encoder[Date] = new Encoder[Date] {
def apply(a: Date) = {
val sdf = new java.text.SimpleDateFormat(fmt)
Json.string(sdf.format(a))
}
}
def main(args: Array[String]) {
//implicit val DateEncodes = encodesDate("yyyy-MM-dd HH:mm:ss")
val f = Foo(new Date, 1, "fff")
println(f.asJson.noSpaces)
}
}
рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ - рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпреБрддреНрдкрддреНрддрд┐ рддрдВрддреНрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди #30 рдХреЗ рд╕рд╛рде рдмрджрд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдХрд▓ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рдмрд╛рдж рдзреВрд▓ рдЬрдордиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕ рдкрд░ рдФрд░ #34 рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдм рддрдХ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ @implicitNotFound
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлрд┐рдВрдЪ рдореЗрдВ рдпрд╣ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВ)ред
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдиреЙрдЯрдлрд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП +1!
рддрд╛рд░реАрдЦ рдХреЛ рдбреАрдХреЛрдб рдФрд░ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рд╣рд┐рдд
implicit val dateTimeEncoder: Encoder[DateTime] = Encoder.instance(a => a.getMillis.asJson)
implicit val dateTimeDecoder: Decoder[DateTime] = Decoder.instance(a => a.as[Long].map(new DateTime(_)))
рддрд┐рдерд┐ рдХреЗ рдХрд╛рд░рдг рдХрдИ рдкреНрд░рд╛рд░реВрдк рд╣реИрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬреЗрдПрдлрд╕реА рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рд░реВрдк рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВ рдЖрдЧреЗ рдмрдврд╝реВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реИ:
<console>:59: error: could not find implicit value for parameter e: io.circe.Encoder[Foo]
println(f.asJson.noSpaces)
^
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо @implicitNotFound
рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╢рд╛рдпрдж рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдиреЙрдЯрдлрд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП +1!
рддрд╛рд░реАрдЦ рдХреЛ рдбреАрдХреЛрдб рдФрд░ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд┐рд╣рд┐рдд
рддрд┐рдерд┐ рдХреЗ рдХрд╛рд░рдг рдХрдИ рдкреНрд░рд╛рд░реВрдк рд╣реИрдВ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЬреЗрдПрдлрд╕реА рдореЗрдВ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╛рд░реВрдк рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред