【发布时间】:2020-09-04 02:48:55
【问题描述】:
我需要为一个看起来像这样的案例类创建一个 spray-json 隐式转换:
case class ExampleCaseClass(identified: String, actor: ActorRef)
我一直在使用 spray-json 进行所有序列化,但我没有看到任何在线解释如何为 ActorRef 类型创建 JsonFormat 隐式转换的地方。
如果有人能帮助我解决这个问题,我将不胜感激,甚至只是指出我可能找到答案的方向。
非常感谢。
【问题讨论】:
-
你能解释一下你为什么要这样做吗?
ActorRef仅在单个ActorSystem实例中有意义,因此将其持久化或将其发送到其他程序将没有用。 -
您将无法序列化 ActorRef 类型。相反,我会序列化演员路径,您可以从中获取演员参考。
-
首先,感谢你们这么快回复我!@Tim 我在一个共享一个 ActorSystem 的 akka 集群中有多个系统,所以我打算在什么时候使用这个 actor 参考我需要传递对同一 ActorSystem 中的一个演员的引用,以便我可以向它发送消息。 @EmiCareOfCell44,你是说根本不可能序列化 ActorRef 类型,我所能做的就是拥有一个包含两个字符串的案例类,而以前是 ActorRef 的那个现在只是一个包含actorRef 的路径?
-
Akka 提供了一个 JSON 序列化器作为 akka-serialization-jackson 模块的一部分。如果你想改用spray-json,那可能也可以,你可以以github.com/akka/akka/blob/…为例,说明如何进行序列化和反序列化。 (它可能会使用一些内部结构)
标签: scala serialization akka implicit-conversion spray-json