2015-01-20 20 views
6

http://www.smartjava.org/content/first-steps-rest-spray-and-scala'daki eğiticiden sonra, bazı beklenmedik hata iletileri var. Ne oluyor? Kapalı JsonWriter'i implicit val personFormat = jsonFormat3(Person) numaralı çağrı ile tanımlamış mıyım? Eğer zaten kapsamındaki diğer bir kişi sınıf var anlamına gelir senin Person sınıf, beyan önce protokol tanımlarsanız gibi oturumun ardındanBir vaka sınıfı için JsonWriter veya JsonFormat tipi sınıfı bulamıyor

scala> import spray.json.DefaultJsonProtocol 
import spray.json.DefaultJsonProtocol 

scala> object MyJsonProtocol extends DefaultJsonProtocol { 
    implicit val personFormat = jsonFormat3(Person) 
} 
    |  | defined object MyJsonProtocol 

scala> case class Person(name: String, fistName: String, age: Long) 
defined class Person 

scala> import spray.json._ 
import spray.json._ 

scala> import MyJsonProtocol._ 
import MyJsonProtocol._ 

scala> Person(name="a", fistName="b", age = 10).toJson 
<console>:45: error: Cannot find JsonWriter or JsonFormat type class for Person 
       Person(name="a", fistName="b", age = 10).toJson 
                ^

cevap

6

görünüyor. Protokolü tanımladıktan sonra Person sınıfını yeniden tanımlayın, böylece format bulunamıyor. Özetlemek gerekirse, önce Person sınıfınızı bildirdiğinizden ve Biçiminizi tanımladığınızdan emin olun.

DÜZENLEME: Güncelleme cevap

+0

çalıştı birçok farklı bu da dahil olmak üzere ithalat, ancak hata mesajı hala var. Soruyu düzenledim. – mirelon

+0

Yeni oturum açıp Protokolü bildirmeden önce "Kişi" sınıfını bildirirseniz, oturum başarılı olur ("Kişi (name =" a ", fistName =" b ", age = 10) .toJson' döndürür). Bu yüzden, formatınızı bildirmeden önce “Person” sınıfınızı beyan ettiğinizi varsayıyorum. – edi

+0

Haklısınız! Farklı sınıfla çalıştım ve işe yarıyor! Cevabı ekle ve kabul edeceğim ... – mirelon

İlgili konular