Json'a ve arkaya dönüştürürken Ec2Provider ve OpenstackProvider arasındaki seçimi tanımak için spray-json'u scala'da kullanmaya çalışıyorum. "Sağlayıcı" bölümünde seçimler yapmak istiyorum ve eğer bu seçenekler mevcut olanlara uymuyorsa doğrulanmamalıdır. ŞunaPolimorfik vaka sınıflarını json'a dönüştürün ve geri
girişimim aşağıdaki kodda görülebilir: o Provider
soyut sınıf için birformatlayıcı bulamadığından
import spray.json._
import DefaultJsonProtocol._
case class Credentials(username: String, password: String)
abstract class Provider
case class Ec2Provider(endpoint: String,credentials: Credentials) extends Provider
case class OpenstackProvider(credentials: Credentials) extends Provider
case class Infrastructure(name: String, provider: Provider, availableInstanceTypes: List[String])
case class InfrastructuresList(infrastructures: List[Infrastructure])
object Infrastructures extends App with DefaultJsonProtocol {
implicit val credFormat = jsonFormat2(Credentials)
implicit val ec2Provider = jsonFormat2(Ec2Provider)
implicit val novaProvider = jsonFormat1(OpenstackProvider)
implicit val infraFormat = jsonFormat3(Infrastructure)
implicit val infrasFormat = jsonFormat1(InfrastructuresList)
println(
InfrastructuresList(
List(
Infrastructure("test", Ec2Provider("nova", Credentials("user","pass")), List("1", "2"))
)
).toJson
)
}
Ne yazık ki, başarısız olur.
test.scala:19: could not find implicit value for evidence parameter of type Infrastructures.JF[Provider]
Bunun için herhangi bir çözümü olan var mı?
Sizden çok daha fazlası! Bu tam olarak ihtiyacım olan şey! – wernerb