通常,我发现自己使用 JSON,我希望在其中的某个地方用字符串解析,我想以一种非平凡的方式(不仅仅是字符串)进行解析。在这种情况下,我需要为其制作解码器或编解码器,因此我可能会尝试执行以下操作:
CodecJson[URL](_.toString.asJson, h ⇒
h.as[String].flatMap(s ⇒ Try{new URL(s)}.toOption)
)
但这不会编译,因为我不能对选项进行平面映射。
应该如何处理这种(看似常见的)行为?
一种选择是解码为 Option[URL],但如果您只想解码失败,这似乎很糟糕。
是否有一种可接受的方式来处理这些后续的解码操作?