예, 고객님의 Format
인스턴스를 작성하는 것은 the recommended approach입니다. 예를 들어, 다음 클래스 감안할 때 :
case class User(
id: Long,
firstName: String,
lastName: String,
email: Option[String]
) {
def this() = this(0, "","", Some(""))
}
인스턴스는 다음과 같습니다
import play.api.libs.json._
implicit object UserFormat extends Format[User] {
def reads(json: JsValue) = User(
(json \ "id").as[Long],
(json \ "firstName").as[String],
(json \ "lastName").as[String],
(json \ "email").as[Option[String]]
)
def writes(user: User) = JsObject(Seq(
"id" -> JsNumber(user.id),
"firstName" -> JsString(user.firstName),
"lastName" -> JsString(user.lastName),
"email" -> Json.toJson(user.email)
))
}
그리고이처럼 사용하십시오 : 자세한 내용은 the documentation를 참조
scala> User(1L, "Some", "Person", Some("[email protected]"))
res0: User = User(1,Some,Person,Some([email protected]))
scala> Json.toJson(res0)
res1: play.api.libs.json.JsValue = {"id":1,"firstName":"Some","lastName":"Person","email":"[email protected]"}
scala> res1.as[User]
res2: User = User(1,Some,Person,Some([email protected]))
을 . 자신의 형식 [사용자]를 작성하지 않고
implicit val userImplicitWrites = Json.writes[User]
val jsUserValue = Json.toJson(userObject)
: 사실 사용자에
환상적인 감사 : 나는이 문서에서 그것을 발견하지 않았습니다
, 여기에 API에 대한 링크입니다! Seq [사용자]를 Json으로 원한다면 어떻게 될까요? :) – LuxuryMode
Play는'Seq'에 대한 인스턴스와 함께 제공되므로'Json.toJson (users) .as [Seq [User]]'를 사용할 수 있습니다. –
Mongo에서 Play의'JsNumber'를 사용하면 직렬화 오류가 발생합니다 :'[error] play - 동작을 호출 할 수 없으므로 결국 오류가 발생합니다 : java.lang.IllegalArgumentException : class scala.math.BigDecimal 클래스를 직렬화 할 수 없습니다. –