scala
import org.json4s._
import org.json4s.native.JsonMethods._
case class Person(name: String, age: Int)
implicit val formats: DefaultFormats = DefaultFormats
val person = Person("Alice", 25)
val jsonString = write(person)
val parsedJson = parse(jsonString)
val parsedPerson = parsedJson.extract[Person]
scala
import org.scalatra._
import org.scalatra.json._
class MyJsonController extends ScalatraServlet with JacksonJsonSupport {
protected implicit val jsonFormats: Formats = DefaultFormats
post("/person") {
val person = parsedBody.extract[Person]
person
}
get("/person/:name") {
val name = params("name")
Person(name, 25)
}
}
scala
class MyJsonController extends ScalatraServlet with JacksonJsonSupport {
protected implicit val jsonFormats: Formats = DefaultFormats
override def errorHandler: PartialFunction[Throwable, Any] = {
case e: IllegalArgumentException =>
BadRequest("Invalid input: " + e.getMessage)
case _ =>
InternalServerError("An error occurred")
}
override def exceptionHandler: PartialFunction[Throwable, Any] = {
case e: Exception =>
InternalServerError("An unexpected exception occurred: " + e.getMessage)
}
}