sorunlu kod daha yüksek veya düşük benziyordu: Burada
import play.api.libs.json._
object Test {
def main(args: Array[String]): Unit = {
case class Resident(name: String, age: Int, role: Option[String])
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
mesele bu makro görünüşte yöntemleri içinde tanımlanan sınıfları için çalışmıyor olmasıydı. Bu, bu tür şeyler yapmamaya rağmen, sorunlu bir sınırlama değildir. Sorun sınıf def gidermek için
nesne düzeyinde gibi başka bir yere hareket ettirilebilir
object Test {
case class Resident(name: String, age: Int, role: Option[String])
def main(args: Array[String]): Unit = {
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
veya dosya düzeyinde
case class Resident(name: String, age: Int, role: Option[String])
object Test {
def main(args: Array[String]): Unit = {
implicit val residentWrites = Json.writes[Resident]
println(Json.toJson(Resident("john", 33, None)))
}
}
Ben, bu asgari örnek görmek sadece kontrol amaçlı olduğunu anlıyorum ama Hala sınıfları Writes
ile nasıl tanımladığımızdan bahsedeceğim. Eğer Resident
içe zaman
object Resident {
implicit val residentWrites = Json.writes[Resident]
}
case class Resident(name: String, age: Int, role: Option[String])
Bu şekilde, onun yazma örtülü kapsamında olacak.
Benim için sadece başarısız olmaz. Amm repl'i açarım, load.ivy ("com.typesafe.play" %% "oyununu"% "2.5.0") ile bağımlı hale getirdim ve 4 satırlık kodunuzu "{" name ":" john "a yapıştırın "yaş": 33} '. Bu hata genellikle, 'sınıfınız' bir 'case class' olmadığında olur, ancak burada her şey yolunda. –
Vay, Ammonite hakkında bilmiyordum! Harika görünüyor, şimdi bu –
evet deneyeceğim, bu benim için de amm repl çalışır. : O projemi tekrar kontrol edeceğim –