Nota: sto copiando questa domanda dal circe Gitter channel per motivi di posteri.Trasformazione di JSON con stato in cir.
supponiamo di voler tradurre questo documento JSON:
{
"places": [{
"id": "dadcc0d9-0615-4e46-9df4-2619f49930a0"
}, {
"id": "21d02f4b-7e88-47d7-bf2b-48e50761b6c3"
}],
"transitions": [{
"id": "10a3aee5-541b-4d04-bb45-cb1dbbfe2128",
"startPlaceId": "dadcc0d9-0615-4e46-9df4-2619f49930a0",
"endPlaceId": "21d02f4b-7e88-47d7-bf2b-48e50761b6c3"
}],
"routes": [{
"id": "6ded1763-86c0-44ce-b94b-f05934976a3b",
"transitionId": "10a3aee5-541b-4d04-bb45-cb1dbbfe2128"
}]
}
In questa:
{
"places": [{
"id": "1"
}, {
"id": "2"
}],
"transitions": [{
"id": "3",
"startPlaceId": "ref:1",
"endPlaceId": "ref:2"
}],
"routes": [{
"id": "4",
"transitionId": "ref:3"
}]
}
Vale a dire, vogliamo sostituire l'UUID in ogni id
con un semplice identificativo numerico incrementato, e per sostituire tutti i riferimenti a ciascun UUID con riferimenti ai nuovi identificatori.
Come possiamo fare questo con circe?
Può 'ids.updated (uuid, next)' essere sostituito con 'ids + (uuid -> next)'? –
@ Łukasz Sì, ma trovo 'aggiornato' un po 'più chiaro, dal momento che non richiede la creazione esplicita di una tupla, e dal momento che ci sarà sempre solo una coppia chiave-valore che stiamo aggiungendo lì. –
Va bene, grazie per la spiegazione. Trovo un po 'di confusione in quanto ciò consentirebbe anche di sostituire il valore esistente ma ciò non accadrà mai e la tua intenzione è quella di inserire un nuovo elemento, ma ora posso anche vedere i vantaggi del tuo approccio. –