FromJSON faz uma lista de vários campos
Eu tenho um objeto para analisar que se parece com isso:
{
"data":
[
{
"virtio0": "some text",
"virtio1": "blah",
"ide2": "some other text",
"cores": 1,
"mem": 512,
...
},
{
// The same ...
}
]
}
Agora, basicamente, eu quero analisar isso em uma [VM], mas meu problema é esses campos numerados. Dependendo da configuração da VM, ela pode ou não ter campos virtioX, ideX .. e não vejo uma maneira de saber com antecedência nem adivinhar os números. Eu estava pensando que o melhor seria definir um tipo de disco que contenha algo como Virtio | SATA IDE e assim por diante para o tipo e um campo de texto para o valor, faça com que cada VM tenha um [Disco] no seu tipo. Algo assim :
data DiskType = Virtio | Sata | IDE
data Disk = Disk {diskType :: DiskType, diskPath :: Text}
data VM = VM {cores :: Int, disks :: [Disk], mem :: Int, ...}
Isso seria ótimo, mas como analiso os campos aleatórios que tenho diretamente dentro do objeto VM json em uma lista?