Hinweis: Ich kopiere diese Frage aus der circe Gitter channel aus Gründen der Nachwelt.Umwandlung von JSON mit Zustand in circe
Angenommen, wir wollen dieses JSON-Dokument übersetzen:
{
"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 diese:
{
"places": [{
"id": "1"
}, {
"id": "2"
}],
"transitions": [{
"id": "3",
"startPlaceId": "ref:1",
"endPlaceId": "ref:2"
}],
"routes": [{
"id": "4",
"transitionId": "ref:3"
}]
}
Dh wir die UUID in jedem id
mit einem einfachen inkrementierten numerischen Kennung ersetzt werden soll, und Ersetzen Sie alle Verweise auf jede UUID durch Verweise auf die neuen IDs.
Wie können wir das mit circe?
Kann 'ids.updated (uuid, next)' durch 'ids + (uuid -> next)' ersetzt werden? –
@ Łukasz Ja, aber ich finde 'aktualisiert' ein wenig klarer, da es nicht die explizite Erstellung eines Tupels erfordert und da es immer nur ein Schlüssel-Wert-Paar gibt, das wir dort hinzufügen. –
Alles klar, danke für die Erklärung. Ich finde es ein wenig verwirrend, da dies auch erlauben würde, bestehenden Wert zu ersetzen, aber das wird nie passieren und Sie beabsichtigen ein neues Element einzufügen, aber jetzt kann ich auch Vorteile Ihres Ansatzes sehen. –