JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Play渲染JSON!和斯卡拉大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于从 Scala类渲染 JSON对象的简单问题.为什么我必须实现反序列化器(读,写).

我有以下案例类:

case class User(firstname:string,lastname:string,age:int)

在我的控制器中:

val milo:User = new User("Sam","Fisher",23);

Json.toJson(milo);

我得到编译错误:找不到类型modelS.User的Json反序列化器.尝试为此类型实现隐式写入或格式.

我以前的项目中,我必须在类中实现一个reader,writer对象才能工作,我发现它非常烦人.

object UserWebsite {
  implicit object UserWebsiteReads extends Format[UserWebsite] {

    def reads(json: Jsvalue) = UserWebsite(
      (json \ "email").as[String],(json \ "url").as[String],(json \ "imageurl").as[String])

    def writes(ts: UserWebsitE) = JsObject(Seq(
      "email" -> JsString(ts.email),"url" -> JsString(tS.Url),"imageurl" -> JsString(ts.imageurl)))
  }
}

解决方法

我真的建议升级到2.1-RC1,因为在这里,JSON编写器/阅读器很容易定义(更多细节 here)

但为了帮助您避免一些错误,我会给你一个进口提示:
– 仅使用这些进口! (注意不包括json.Reads)

import play.api.libs.json._
import play.api.libs.functional.syntax._
import play.api.libs.json.Writes._

而且你只需编写这段代码就可以将你的课程写入/从Json读取(当然你将拥有User而不是Address:

implicit val addressWrites = Json.writes[Address]
implicit val addressReads = Json.reads[Address]

现在,它们将自动使用:

写的例子:

Ok(Json.toJson(entities.map(s => Json.toJson(s))))

阅读的例子(我把我的例子用于通过从身体读取json来创建实体)请注意这里使用的addressReads

def create = Action(parse.json) { request =>
        request.body.validate(addressReads).map { entity =>
          Addresses.insert(entity)
          Ok(RestResponses.toJson(RestResponse(OK,"succesfully created a new entity.")))
        }.recover { Result =>
          Badrequest(RestResponses.toJson(RestResponse(BAD_requEST,"Unable to transform JSON body to entity.")))
        }
}

总之,他们尝试(并成功)使JSON的事情变得非常简单.

大佬总结

以上是大佬教程为你收集整理的使用Play渲染JSON!和斯卡拉全部内容,希望文章能够帮你解决使用Play渲染JSON!和斯卡拉所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。