David
David

Reputation: 45

SCALA How to parse json back to the controller?

I am new to Scala. I want to parse JSON data in scala store to database table.

My GET method looks like this (Please ignore the permissions):

def Classes = withAuth { username =>
implicit request =>
  User.access(username, User.ReadXData).map { user =>
    implicit val writer = new Writes[Class] {
      def writes(entry: Class): JsValue = Json.obj(
        "id" -> entry.id,
        "name" -> entry.name
      )
    }
    val classes = (Class.allAccessible(user))
    Ok(Json.obj("success" -> true, "classes" -> classes))
  }.getOrElse(Forbidden(Application.apiMessage("Not authorised"))) }

This GET method returns the json below:

"success":true,"schools":[{"id":93,"name":"Happy unniversity",}]}

I'm currently rendering the JSOn in a datatables js (editor) grid - with success

HOWEVER, I'm unable to parse and POST the JSON and store it to the database (mysql) table.

Thank you for your guidance!

Upvotes: 0

Views: 96

Answers (1)

YouXiang-Wang
YouXiang-Wang

Reputation: 1127

Looks you are using play-json.

For class User

import play.api.libs.json.Json

final case class User(id: String, name: String)

object User {
  implicit val userFormat = Json.format[User]
}

object UserJson {

  def main(args: Array[String]): Unit = {
    val user = User("11", "Peter")

    val json = Json.toJson(user).toString()
    println("json ===> " + json)

    val user2 = Json.parse(json).as[User]

    println("name ===> " + user2.name)

  }

}

I definitely recommend this lib: "de.heikoseeberger" %% "akka-http-jackson" % "1.27.0" for akka-http.

Upvotes: 2

Related Questions