J'ai des données JSON provenant de Firebase qui ressemblent à ça.
{
"type": "added",
"doc": {
"id": "asda98j1234jknkj3n",
"data": {
"title": "Foo",
"subtitle": "Baz"
}
}
}
Le type peut être l'un des suivants "added"
, "modified"
o "removed"
. Doc
contient un id
et un data
champ. Le site data
Le champ peut avoir n'importe quelle forme et je suis capable de le décoder correctement.
Je veux utiliser des types d'union pour représenter ces valeurs comme suit,
type alias Doc data =
(String, data)
type DocChange doc
= Added doc
| Modified doc
| Removed doc
Ici, le Doc
représente la valeur contenue dans l'alias de type doc
dans le JSON ci-dessus. DocChange
représente l'ensemble. Si le type est disons "added"
alors le JSON doit être décodé en Added doc
et ainsi de suite. Je ne comprends pas comment décoder les types d'union.
Je pense que le andThen
de la fonction Json.Decode
ressemble à ce dont j'ai besoin, mais je ne parviens pas à l'utiliser correctement.