FromJSON hace una lista de múltiples campos
Tengo un objeto para analizar que se parece un poco a esto:
{
"data":
[
{
"virtio0": "some text",
"virtio1": "blah",
"ide2": "some other text",
"cores": 1,
"mem": 512,
...
},
{
// The same ...
}
]
}
Ahora, básicamente, quiero analizar eso en una [VM], pero mi problema son esos campos numerados. Dependiendo de la configuración de VM, podría tener o no campos virtioX, campos ideX ... y no veo una manera de saber de antemano, ni adivinar los números. Estaba pensando que lo mejor podría ser definir un tipo de Disco que contendría algo como Virtio | Sata | IDE y así sucesivamente para el tipo, y un campo de Texto para el valor, luego haga que cada VM tenga un [Disco] en su tipo. Algo como esto :
data DiskType = Virtio | Sata | IDE
data Disk = Disk {diskType :: DiskType, diskPath :: Text}
data VM = VM {cores :: Int, disks :: [Disk], mem :: Int, ...}
Eso sería genial, pero ¿cómo analizo esos campos aleatorios que tengo directamente dentro del objeto VM json en una lista?