LoginSignup
9
8

More than 5 years have passed since last update.

Scala 2.10でJSONシリアライズ

Posted at

Play Framework 2.1でJSONをレスポンスとして返す実装を書こうとしたのですが、今日2013-05-22時点ではJerksonがScala 2.10に対応していません(Pull Requestは出ている)。
代替手段として、Jackson Scala Moduleを使うことにしました。

ライブラリの追加は下記の通り。

Build.scala
  val appDependencies = Seq(
    "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.1.3"
  )

準備は以下のとおり。

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)

DefaultScalaModuleというのが、Scalaがサポートしている型をJSONに変換するためのモジュールだそうです。

あとはJSONに変換したいScalaのインスタンスを渡してあげればOKです。今回はStringに変換する例です。

  //インスタンスobjをJSONに変換したStringに変換
  val json: String = mapper.writeValueAsString(obj)

Case classを渡してあげると、引数の名前がJSONのキーになります。

case class DataPoint(title: String, value: String)
val obj = DataPoint("test", "abc")

のようなcase classがあったときのobjのJSON変換結果は

JSON
{"test":"abc"}

のようになります。
オブジェクトへのマッピング(デシリアライズ)にも、もちろん対応しています。ですが私はまだ触ったことがありません。また機会を見つけて調査してみます。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8