Исключение ScalaSig для FieldSerializer с TypeTag - PullRequest
0 голосов
/ 14 сентября 2018

ПРИМЕЧАНИЕ. Я уже разместил на странице 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
...