注意:我已经张贴在json4s的github issues页面上,但是没有得到任何回应。由于这个问题,我被困住了。
在将scala中的case类转换为json时,出现以下错误。
找不到类java.lang.ClassLoade的ScalaSig
如果我在任何混合特征中都没有typeTag引用,则能够转换为json。
在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