Json 播放框架:*pickBranch*和*或*
在下面的语句中,Json 播放框架:*pickBranch*和*或*,json,scala,playframework,Json,Scala,Playframework,在下面的语句中,pickBranch返回一个Reads ((__ \ 'firstName).json.pickBranch) 。。。我可以这样调用或: val emptyObj = __.json.put(Json.obj()) ((__ \ 'firstName).json.pickBranch or emptyObj) 如果pickBranch成功,则或返回pickBranch的结果,否则返回emptyObj 现在,是否可以调用pickBranch返回的读取数据上的或,并传递清空bj或
pickBranch
返回一个Reads
((__ \ 'firstName).json.pickBranch)
。。。我可以这样调用或:
val emptyObj = __.json.put(Json.obj())
((__ \ 'firstName).json.pickBranch or emptyObj)
如果pickBranch
成功,则或返回pickBranch
的结果,否则返回emptyObj
现在,是否可以调用pickBranch
返回的读取数据上的或,并传递清空bj
或返回的pickBranch
内容
val emptyAllowed = true
((__ \ 'firstName).json.pickBranch or (if (emptyAllowed) emptyObj else >>>RESULT OF pickBranch<<<))
val emptyAllowed=true
(((uu\'firstName).json.pickBranch或(if(emptyAllowed)emptyObj else>>pickBranch的结果好,下面是解决方案。首先,我为读取创建了一个扩展对象:
package object typeExtensions {
import play.api.libs.json._
import play.api.libs.functional.syntax._
implicit class ReadsExtensions(reads: Reads[JsObject]) extends AnyVal {
def orEmpty = reads | __.put(Json.obj())
def orEmptyIf(b: Boolean) = if (b) orEmpty else reads
}
}
下面是如何使用它:
val canBeEmpty: Boolean = true
((__ \ 'firstName).json.pickBranch orEmptyIf canBeEmpty))
有关更多详细信息,请参阅我的完整答案。
我希望这有帮助