如何使用playjson为mysql创建doobie元示例?

5t7ly7z5  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(303)

如何使用doobie、mysql和play json在查询级别实现基本的序列化/反序列化?

r9f1avp5

r9f1avp51#

在互联网上搜索了mysql和jdbc中json特定类型支持的答案之后,看起来 String 是我们所有的可用(请插话,并纠正我,如果这是错误的)。在我看来,doobie doc并没有明确给出这个答案,因为提供的例子使用了postgres提供的更严格的例子。不幸的是,mysql一点也不严谨,但这是另一个主题。
现在,这里有一个简单的解决方案示例,它还假设play 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]

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

相关问题