我是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返回)而无需任何额外的操作?
答案 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
)
}
也许我没有深入研究的宏可以更自动地做到这一点......