I can't understand, can i do this with Json transformer?
import play.api.libs.json._
val r = ( __ \ "opt").readNullable[String]
val w = ( __ \ "someOpt").writeNullable[String]
val o1 = Json.obj("noopt" -> "some opt value")
val o2 = Json.obj("opt" -> "some opt value")
r.reads(o1).map(w.writes)
r.reads(o2).map(w.writes)
...
scala> res6: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({},)
scala> res7: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({"someOpt":"some opt value"},/opt)
The source code analysis resulted in a decision
val t = Reads.nullable[String]( __ \ "opt").map{
case Some(o) => JsPath.createObj( (__ \ "someOpt") -> JsString(o))
case _ => Json.obj()
}
or more familiar (from Json combinators)
val t = ( __ \ "opt").readNullable[String].map{
case Some(o) => Json.obj("someOpt" -> o)
case _ => Json.obj()
}
result:
val o1 = Json.obj("noopt" -> "some opt value")
val o2 = Json.obj("opt" -> "some opt value")
o1.transform(t)
o2.transform(t)
scala> res23: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({},)
scala> res24: play.api.libs.json.JsResult[play.api.libs.json.JsObject] = JsSuccess({"someOpt":"some opt value"},/opt)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.