0

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

4

1 回答 1

2

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

现在,这是一个简单的解决方案示例,这也假设 Play JSON Readers/Writers 在范围内:

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]

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

于 2018-10-02T20:41:48.183 回答