Заранее извиняюсь за кросс-постинг: я отправил этот вопрос в список пользователей спрея, но список, похоже, модерируется, и, кажется, никого нет дома. Надеюсь, SO - лучшее место.
У меня возникают трудности с сериализацией сложных структур данных с помощью spray-json
. Например, простой immutable.Map[String,String]
работает нормально, а immutable.Map[String,Foo]
, где Foo
— класс case, который я определяю, — нет. Документация оставила у меня впечатление, что мне просто нужно определить JsonFormat
для Foo
, и я буду готов к работе.
Вот пример кода:
import spray.json._
import DefaultJsonProtocol._
case class Foo(hi: String)
object FooProtocol extends DefaultJsonProtocol {
implicit val fooFormat: JsonFormat[Foo] = jsonFormat1(Foo)
}
import FooProtocol._
object Thing {
def toSomething = {
Map("foo" -> Foo("bar"), "baz" -> Foo("quux")).toJson
}
}
Что дает следующую ошибку компилятора:
[info] Compiling 1 Scala source to C:\spraytest\target\scala-2.10\classes...
[error] C:\spraytest\src\main\scala\Foo.scala:12: Cannot find JsonWriter or JsonFormat type class for scala.collection.immutable.Map[String,Foo]
[error] Map("foo" -> Foo("bar"), "baz" -> Foo("quux")).toJson
[error] ^
[error] one error found
[error] (compile:compile) Compilation failed
[error] Total time: 5 s, completed Jun 26, 2014 11:40:26 AM
Я в тупике.