Похоже, есть учебник Aeson, документирующий именно эту проблему: Разбор без создания дополнительных типов
В вашем случае data
имеет массивы массивов, так что я неконечно, если вы хотите Vector (Vector Text)
или объединить все это в один массив, но адаптируясь из документации:
justData :: Value -> Parser (Vector (Vector Text))
justData = withObject "structure with data" $ \o -> o .: "data"
justDataFlat :: Value -> Parser (Vector Text)
justDataFlat value = fmap join (justData value)
Также обратите внимание, что если ваша структура глубже, как это:
{
"data": {
"deep": [
"data",
"more data"
]
}
}
Вы можете использовать .:
более одного раза:
deeperData :: Value -> Parser (Vector Text)
deeperData = withObject "structure with deeper data" $ \o ->
step1 <- o .: "data"
step1 .: "deep"