使用 circe 序列化不透明类型的最简单方法是什么

问题描述 投票:0回答:1

示例:

opaque type UserName = String

此版本自动连载:

case class UserName(value: String) extends AnyVal
json scala serialization scala-3 circe
1个回答
0
投票

我不知道这是否是最优雅的方式,因为我是新手

circe

opaque type UserName = String

object UserName:
  def apply(s: String): UserName = new UserName(s)
  given Encoder[UserName] = new Encoder[UserName]:
    def apply(a: UserName): Json = Json.fromString(a.toString)
  given Decoder[UserName] = new Decoder[UserName]:
    def apply(c: HCursor): Decoder.Result[UserName] =
      c.as[String].map{ UserName(_)}

© www.soinside.com 2019 - 2024. All rights reserved.