ПРИМЕЧАНИЕ. Я уже разместил на странице json4s github проблемы , но пока не получил никакого ответа. Я застрял из-за этой проблемы.
Я получаю следующую ошибку при преобразовании класса case в json в scala.
Не удается найти ScalaSig для класса java.lang.ClassLoade
Он может конвертироваться в json, если у меня нет ссылки на typeTag ни в одной из смешанных черт.
В scala 2.11 и json4s 3.4 все работает нормально, когда я попытался обновить scala до 2.12, у меня появилась эта проблема.
trait NameLike {
def name:String
}
abstract class Copyable[T:TypeTag] {
def tag:TypeTag[T] = typeTag[T]
}
case class Employee(id:Long, firstName:String, lastName:String) extends Copyable[Employee] with NameLike {
override val name: String = firstName + " " + lastName
}
Затем в моей реализации я заполняю класс дел Employee и преобразую его в json. Это выбрасывает ошибку ScalaSig.
Вот моя логика Json4s:
trait JsonUtilities {
self: TypeSerializers =>
def toJson(obj: Any): String = {
compact(Extraction.decompose(obj))
}
}
trait TypeSerializers {
implicit lazy val serializerFormats: Formats = new DefaultFormats {
override def dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
override val fieldSerializers: List[(Class[_], FieldSerializer[_])] = List((classOf[NameLike], FieldSerializer[NameLike]()))
}
}
object JsonUtilitiesImpl extends JsonUtilities with TypeSerializers
Если у меня нет FieldSerializer
, то преобразование json идет нормально.
Кто-нибудь еще сталкивался с этой проблемой?
Scala Version : 2.12.6
Json4s version : 3.6.1