Я нахожусь в ситуации, когда мне нужно сериализовать в JSON класс без case.спрей-json для нормальных классов (не случай) в списке
Имея класс, как:
class MyClass(val name: String) {
def SaySomething() : String = {
return "Saying something... "
}
}
Я создал JsonProtocol для этого класса:
object MyClassJsonProtocol extends DefaultJsonProtocol {
implicit object MyClassJsonFormat extends JsonWriter[MyClass] {
override def write(obj: MyClass): JsValue =
JsObject(
"name" -> JsString(obj.name)
)
}
}
Позже в коде я импортировать протокол ..
val aListOfMyClasses = List[MyClass]() ... // lets assume that has items and not an empty list
import spray.json._
import MyClassJsonProtocol._
val json = aListOfMyClasses.toJson
При попытке построить проект я получаю следующую ошибку:
Не может найти JsonWriter или JsonFormat для класса типа List [MyClass]
распыления JSON уже имеет формат общего список и я обеспечиваю формат для своего класса, что бы быть проблемой?
Заранее спасибо ... !!!
Thks. Он работает, хотя я до сих пор не знаю, почему свойство CollectionFormats не включено. Я добавил его в импорт явно, но собирал эфир. – leonfs
Не нужно импортировать CollectionFormats. DefaultJsonProtocol расширяет все эти черты - https://github.com/spray/spray-json/blob/master/src/main/scala/spray/json/DefaultJsonProtocol.scala#L26 –
Я знаю, но тогда это не объясняет почему он не работает при расширении JsonWriter вместо JsonFormat. По-прежнему расширяется DefaultJsonProtocol. – leonfs