LoginSignup
20
19

More than 5 years have passed since last update.

ScalaでJSONをエンコード・デコードしたい

Last updated at Posted at 2014-10-24

spray-jsonを使ってエンコード・デコードする方法。

build.sbt
libraryDependencies ++= Seq(
    "io.spray"  %%  "spray-json" % "1.2.6"
)
    // ドメインオブジェクト
    case class Name(firstName: String, lastName: String)
    case class User(id: String, name: Name)

    // JSONのマッピングを定義する
    import spray.json._
    object MyJsonProtocol extends DefaultJsonProtocol {
      implicit val NameFormat = jsonFormat2(Name)
      implicit val UserFormat = jsonFormat2(User)
    }

    def jsonに変換する() = {
      import MyJsonProtocol._
      val user = User("alice", Name("Alice", "Brown"))
      val actualJson = user.toJson.compactPrint
      val expectedJson = """{"id":"alice","name":{"firstName":"Alice","lastName":"Brown"}}"""
      assert(actualJson == expectedJson)
    }

    def jsonから変換する() = {
      import MyJsonProtocol._
      val jsonData = """{"id":"alice","name":{"firstName":"Alice","lastName":"Brown"}}"""
      val actualUser = jsonData.parseJson.convertTo[User]
      val expectedUser = User("alice", Name("Alice", "Brown"))
      assert(actualUser == expectedUser)
    }

    jsonに変換する()
    jsonから変換する()
20
19
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
20
19