Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Scala 2.10でJSONシリアライズ

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"}

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?