【发布时间】:2018-10-02 20:41:48
【问题描述】:
如何使用Doobie、MySQL 和 Play JSON 在查询级别实现基本的序列化/反序列化?
【问题讨论】:
标签: mysql scala playframework doobie
如何使用Doobie、MySQL 和 Play JSON 在查询级别实现基本的序列化/反序列化?
【问题讨论】:
标签: mysql scala playframework doobie
在互联网上搜索有关 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]
请注意,如果反序列化失败,这将引发异常。
【讨论】: