如何在 scala 中使用函数式编程直接将 JSON 馈送到 CASE CLASS?
How to feed JSON to CASE CLASS directly using functional programming in scala?
{
"cars": [{
"amount": 120.00,
"name": "Car1"
}, {
"amount": 245.00,
"name": "Car2"
}]
}
我正在阅读上面 JSON 在我的控制器中的以下内容
val body: JsObject = request.body.asInstanceOf[JsObject]
我有以下案例CLASS
case class BIC(name: String, amount: Double)
我想通过从 JSON 中读取数据来创建 List[BIC] 对象 [例如body] 使用函数式样式
首先,为您的模型定义两种情况 类:
object Models {
case class Bic(name : String, amount : Double)
object Bic {
implicit val BicFormat = Json.format[Bic]
}
case class Cars(bics : List[Bic])
object Cars {
implicit val CarsFormat = Json.format[Cars]
}
}
您正在使用 Play Framework
,因此您可以使用 JSON
库。
在你的控制器中,如果你想阅读 bics,你可以这样做:
def getCars = Action(parse.json) { request =>
request.body.validate[Cars] map { cars =>
// treat your cars ..
}
}
使用Play JSON.
示例:
case class Wrapper(cars: List[Bic])
case class BIC(name: String, amount: Double)
然后在你的控制器中:
implicit val wrapperFormats = Json.format[Wrapper]
implicit val bICFormats = Json.format[BIC]
def postCars(): Action[JsValue] = Action(json.parse) { implicit request =>
request.body.validate[Wrapper] match {
case JsSuccess(obj, _) => {
//do something with obj.
}
case JsError(err) => {
BadRequest(
JsObject(
"error" -> err.toString
)
)
}
}
}
请注意,我要返回 Action[JsValue]
这是 JQuery 在使用 AJAX.
时 运行 success
希望对您有所帮助,
里斯
另一个参考:
https://www.playframework.com/documentation/2.5.x/ScalaJsonCombinators
{
"cars": [{
"amount": 120.00,
"name": "Car1"
}, {
"amount": 245.00,
"name": "Car2"
}]
}
我正在阅读上面 JSON 在我的控制器中的以下内容
val body: JsObject = request.body.asInstanceOf[JsObject]
我有以下案例CLASS
case class BIC(name: String, amount: Double)
我想通过从 JSON 中读取数据来创建 List[BIC] 对象 [例如body] 使用函数式样式
首先,为您的模型定义两种情况 类:
object Models {
case class Bic(name : String, amount : Double)
object Bic {
implicit val BicFormat = Json.format[Bic]
}
case class Cars(bics : List[Bic])
object Cars {
implicit val CarsFormat = Json.format[Cars]
}
}
您正在使用 Play Framework
,因此您可以使用 JSON
库。
在你的控制器中,如果你想阅读 bics,你可以这样做:
def getCars = Action(parse.json) { request =>
request.body.validate[Cars] map { cars =>
// treat your cars ..
}
}
使用Play JSON.
示例:
case class Wrapper(cars: List[Bic])
case class BIC(name: String, amount: Double)
然后在你的控制器中:
implicit val wrapperFormats = Json.format[Wrapper]
implicit val bICFormats = Json.format[BIC]
def postCars(): Action[JsValue] = Action(json.parse) { implicit request =>
request.body.validate[Wrapper] match {
case JsSuccess(obj, _) => {
//do something with obj.
}
case JsError(err) => {
BadRequest(
JsObject(
"error" -> err.toString
)
)
}
}
}
请注意,我要返回 Action[JsValue]
这是 JQuery 在使用 AJAX.
success
希望对您有所帮助,
里斯
另一个参考: https://www.playframework.com/documentation/2.5.x/ScalaJsonCombinators