如何使用Play JSON为MySQL创建Doobie Meta实例?



如何使用Doobie,MySQL和Play JSON在查询级别实现基本的序列化/反序列化?

在互联网上搜索有关MySQL和JDBC中JSON特定类型支持的答案后,似乎String我们所拥有的一切(如果这是错误的,请插话并纠正我(。IMO,Doobie 文档并没有让这个答案变得显而易见,因为提供的示例通过 PostGRES 使用了更严格的示例。不幸的是,MySQL一点也不严谨,但这是另一个对话。

现在,下面是一个简单的解决方案示例,这也假设播放 JSON 读取器/编写器在范围内:

import doobie.util.meta.Meta
import play.api.libs.json._
def playJsonMeta[A: Reads: Writes]: Meta[A] = Meta[String].xmap[A](
Json.parse(_).as[A],
s => Json.stringify(Json.toJson(s))
)
implicit val fooMeta: Meta[Foo] = playJsonMeta[Foo]

请注意,如果反序列化失败,这将引发异常。

最新更新