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 を使用する際の問題は、どの実装が使用されていても、オブジェクトの逆シリアル化によって異なるインスタンスが生成されることです。ケース オブジェクトにパターン マッチングを多用しているため、既存のコードがすべて壊れてしまいます。
私の質問は、ケース オブジェクトを保存するときに、scala および akka の永続性で使用できる JSON ライブラリはどれですか?
リフレクションを介してケース オブジェクトの逆シリアル化を正しく処理するライブラリは 1 つでもありますか? - または、誰かが良い回避策を持っていますか?