Ну, я не могу сказать, сколько их будет, может быть 0, может быть 10, может быть 50. Но я думаю, что у меня может быть цикл за 99 итераций или что-то в этом роде, я думаю, что должно быть максимум ..
я есть объект для анализа, который выглядит примерно так:
{
"data":
[
{
"virtio0": "some text",
"virtio1": "blah",
"ide2": "some other text",
"cores": 1,
"mem": 512,
...
},
{
// The same ...
}
]
}
Теперь я в основном хочу разобрать это в [VM], но моя проблема в этих пронумерованных полях. В зависимости от конфигурации виртуальной машины, она может иметь или не иметь поля virtioX, поля ideX ... и я не вижу ни способа узнать заранее, ни угадать числа. Я подумал, что лучше всего определить тип диска, который будет содержать что-то вроде Virtio | Сата | IDE и т. Д. Для типа и текстовое поле для значения, тогда у каждой виртуальной машины есть [Disk] в своем типе. Что-то вроде этого :
data DiskType = Virtio | Sata | IDE
data Disk = Disk {diskType :: DiskType, diskPath :: Text}
data VM = VM {cores :: Int, disks :: [Disk], mem :: Int, ...}
Это было бы здорово, но как я могу разобрать те случайные поля, которые у меня есть прямо внутри объекта VM json, в список?