简体   繁体   English

如何在 scala 中的 json object 中包含多个项目?

[英]How to include more than one item in my json object in scala?

I'm trying to include more than one item in my json object (currently I can only add one item),我试图在我的 json object 中包含不止一项(目前我只能添加一项),

In my scala class I have:在我的 scala class 我有:

case class Api(row:Int,name:String,age:Int)

Ok(Json.obj("status" -> "ok", "cars" -> carsBooked.map(_.row), "saved" -> saved, "failed" -> failed, "notBooked" -> Response.errors)) <<---- this works perfectly and I'm able to get a list of all the row in json, but how do i add name and age? Ok(Json.obj("status" -> "ok", "cars" -> carsBooked.map(_.row), "saved" -> saved, "failed" -> failed, "notBooked" -> Response.errors)) <<----这完美地工作,我能够得到json中所有行的列表,但是我如何添加姓名和年龄?

Ideally I wanna do something like carsBooked.map(_.row._name etc..)理想情况下,我想做类似carsBooked.map(_.row._name etc..)

Thanks!谢谢!

If we have如果我们有

case class Api(row: Int, name: String, age: Int)

then we can generate codecs automatically .然后我们可以自动生成编解码器

object Api {
  implicit val apiReads: Reads[Api] = Json.reads[Api]
  implicit val apiWrites: OWrites[Api] = Writes.writes[Api]
}

and then we could write:然后我们可以写:

Ok(Json.obj("status" -> "ok", "cars" -> Json.toJson(carsBooked), "saved" -> saved, "failed" -> failed, "notBooked" -> Response.errors))

or we can actually make this also automated:或者我们实际上可以使这也自动化:

case class ApiResult(
  status: String,
  cars: List[Api],
  saved: List[String],
  failed: List[String],
  notSaved: List[String]
)
object ApiResult {
  implicit val apiResultReads: Reads[ApiResult] = Json.reads[ApiResult]
  implicit val apiResultWrites: OWrites[ApiResult] = Writes.writes[ApiResult]
}
val apiResult: ApiResult = ...
Ok(Json.toJson(apiResult))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM