在Slick Table中使用什么数据类型定义json?

时间:2017-12-09 02:13:01

标签: json scala playframework slick

我的数据库中的表有一个类型为json的列。我想知道,当我在Slick中定义表时,我应该使用哪种数据类型? 目前,对于特定列我使用Blob,因为我发现它建议here。 我很想知道是否有可能使用json库类提供的Play框架(play.libs.json)?如果是这样,怎么样?我需要隐式映射器吗?

1 个答案:

答案 0 :(得分:1)

Slick提供了Slick不支持的custom data type mapper。 在我的例子中:将Json作为字符串保存到数据库中,并使用JValue作为代码保存(我正在使用json4s):

object JsonMapper{
   import driver.api._

   implicit val jsonMapper = MappedColumnType.base[JValue, String](
      { json => write(framesType) /* json writer */ }, 
      { str =>parse(str)  /*json parser */ }
     )
  }

 import JsonMapper._

  case class Info(id:Int, json:JValue)
  class DBTable(tag:Tag) extends Table[Info](tag, "info"){
    val id = column[Int]("id")
    val json = column[JValue]("json")
    def * = (id ,json) <> (Info.tupled, Info.unapply)
  }

我不确定这会对您的情况有效。但这是一种在Slick中映射任何自定义数据类型的方法。