Remova vários ramos JSON com play-json

Imagine que você deseja podar / eliminar / remover os ramos id e proprietário desta carga útil json

{
"attr1": "value1",
"attr2": "value2",
"attr3": "value3",
"owner": "foo@bar.com",
"id" :{ "$oid":"aaaaaaaa"}
}

Ao transformar json com transformadores play-json, se você quiser podar ramos, deve usar a seguinte composição:

val jsonDropKey= (__  'id ).json.prune andThen 
(__ '
owner ).json.prune

O seguinte NÃO funcionará:

val jsonDropKey= ((__  'id ).json.prune and 
(__ '
owner ).json.prune).reduce

O motivo é que a and ... reducesintaxe aplicará cada transformador a toda a entrada e mesclará (reduzirá) o resultado. Ao contrário andThen, aplicará os transformadores passando sequencialmente o resultado de um transformador para o próximo.