【问题标题】:How do I create a Doobie Meta instance for MySQL using Play JSON?如何使用 Play JSON 为 MySQL 创建 Doobie Meta 实例?
【发布时间】:2018-10-02 20:41:48
【问题描述】:

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

【问题讨论】:

    标签: mysql scala playframework doobie


    【解决方案1】:

    在互联网上搜索有关 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]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 2019-08-13
      相关资源
      最近更新 更多