Ну, я не могу сказать, сколько их будет, может быть 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, в список?

Ответы на вопрос(2)

Ваш ответ на вопрос