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 ... reduce
sintaxe 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.