我需要将akka事件序列化为json。基于“在 Scala 中使用什么 JSON 库? ”我尝试了几个库。由于我的序列化程序对我的所有具体事件一无所知,因此由案例类和案例对象组成的事件应该使用反射进行序列化。json4s似乎最符合我的要求。
class Json4sEventAdapter(system: ExtendedActorSystem) extends EventAdapter {
implicit val formats = Serialization.formats(FullTypeHints(List(classOf[Evt])))
override def toJournal(event: Any): Any = event match {
case e: AnyRef =>
write(e).getBytes(Charsets.UTF_8)}
override def fromJournal(event: Any, manifest: String): EventSeq = event match {
case e: Array[Byte] => {
EventSeq.single(read[Evt](new String(e.map(_.toChar))))}}
使用 json4s 的问题是,无论使用哪种实现,对象的反序列化都会产生不同的实例。由于我们对 case 对象大量使用模式匹配,这会破坏我们现有的所有代码。
所以我的问题是:在存储案例对象时,哪个 JSON 库可以与 scala 和 akka 持久性一起使用?
是否有一个库可以正确地通过反射处理案例对象的反序列化?- 或者有没有人有一个好的解决方法?