我们在Scala Play json doc中找到了这个例子: https://www.playframework.com/documentation/2.6.x/ScalaJsonTransformers
// Case 6: Prune a branch from input JSON
val jsonTransformer = (__ \ 'key2 \ 'key22).json.prune
json.transform(jsonTransformer)
如何在条件下修剪分支?例如,如果key22
值为空字符串,则修剪key22
分支?
答案 0 :(得分:1)
我看不到内置的方法,但我们可以自己构建一个。
我们有道路 - 我们希望读者能够检查价值,如果符合条件,则会修剪路径。
因此,我们可以通过选择路径来获取读者的价值。我们对此进行平面映射,取值,如果测试为真,则返回修剪过的读者,否则返回直通读者,因为我们不想修剪该值。
结果是读者能够做我们想要的事。
select date_add(curdate(), interval 30 minute) >= '2017-11-22 16:00:00' and
'2017-11-22 16:00:00' <= date_add(curdate(), interval 15 hour)
这给了我们:
def pruneIf(path: JsPath)(test: (JsValue => Boolean)): Reads[JsValue] =
path.json.pick.flatMap(value =>
if (test(value)) path.json.prune.map(identity) else __.json.pick)