【问题标题】:Serialize a polymorphic F case class using Play Json使用 Play Json 序列化多态 F 案例类
【发布时间】:2021-06-27 20:25:01
【问题描述】:

我有一种情况,我必须拥有这个case class Config[F[_]](pattern: String, format:F[String]),因为有时格式应该存在,并且像Config[Id] 一样使用它,有时不使用Config[Option]。 问题是,这如何处理 Play 或 Spray Json 以及序列化/反序列化这种结构的一些最佳实践。 我以前使用过这个技巧几次,但从来没有强制序列化,直到我想知道读写方法应该是什么样子。此外,如果有任何缺点或处罚,性能也是明智的。 有什么想法吗?谢谢各位!

【问题讨论】:

    标签: json scala spray-json play-json higher-kinded-types


    【解决方案1】:

    首先,如果派生没有变坏,您将能够为 Config[List] 和 Config[Option] 制作编解码器。

    应该是这样的:

    implicit val configOptionCodec: Codec[Config[Option]] = deriveCodec
    implicit val configListCodec: Codec[Config[List]] = deriveCodec
    

    这不会给您带来太多的性能损失,只是样板损失。但是你可以编写像@JsonCodecsFor(List, Option, Chain) 这样的宏。

    【讨论】:

      猜你喜欢
      • 2017-04-10
      • 2011-06-29
      • 2016-10-18
      • 2013-02-09
      • 2013-08-29
      • 1970-01-01
      • 2018-02-08
      • 2017-12-25
      • 1970-01-01
      相关资源
      最近更新 更多