在play框架(scala)中将json响应作为json响应的最简单方法是什么?

时间:2015-09-17 20:25:42

标签: json scala playframework

我是scala和玩框架的新手。

为什么scala没有这样的东西?

  class Customer (idx: Int, emailx: String) {
     val id: Int = idx
     val email: String = emailx
  }

  ....

  def customers = Action {
    val customer = new Customer(1, "Customer1")       
    Ok(Json.toJson(customer))
  }

我喜欢玩frameowrk(scala,它的生产力)

但是,

为什么我要将对象manulay的每个字段映射到json字段? scala在Java或C#中实现这个未来是如此困难,甚至php都有json_encode。

有没有办法实现这个简单的目标(将对象作为json返回)而无需任何额外的操作?

2 个答案:

答案 0 :(得分:3)

宏是光滑的,非常适合生成简单的案例类格式

jQuery('.your-class-here').one('inview', function (event, visible) {
    if (visible == true) {
      //Enjoy !
    }
});

通常,您将伴随对象中的此声明放入要为其生成格式的类型中。这样,它就隐含在您导入类型(implicit val jsonFormat = Json.format[Customer] )的任何文件的范围内。像这样:

Customer

然后在你的控制器中你可以做

case class Customer(...)
object Customer {
  implicit val jsonFormat = Json.format[Customer]
}

将产生Play预期的Json.toJson(customer) 类型。

答案 1 :(得分:2)

对于我的类,我定义了一个转换器,以便我可以准确地写出你所写的内容,例如: Json.toJson(customer),但转换器虽然很简单,但目前必须写一次。例如。

implicit val customerWrites = new Writes[Customer] {
  def writes(customer:Customer) = Json.obj(
    "id" -> customer.id,
    "email" -> customer.email
  )
}

也许我没有深入研究的宏可以更自动地做到这一点......