Я пытаюсь разобрать JSON следующей формы с использованием aeson
{"field":{"name":"..."}}
or
{"tag":{"name":"..."}}
or
{"line":{"number":"..."}}
для построения следующего типа данных
data Rule = Line Integer
| Field L.ByteString
| Tag L.ByteString
К сожалению, я сталкиваюсь с двумя проблемами, решения которых я не нашел, а именно:
Как мне анализировать вложенный JSON? Если посмотреть на реализацию (.:) , он использует поиск для извлечения определенного значения ключа. Я не решаюсь делать что-то подобное, потому что, похоже, это слишком сильно зависит от специфики того, как aeson реализует вещи. Я ошибаюсь, полагая, что это проблема?
Как мне использовать правильный конструктор данных в зависимости от того, какой ключ присутствует в JSON? Все мои усилия с ни к чему не привели.
Я бы опубликовал код, который написал до сих пор, но я даже не дошел до того момента, когда у меня есть что-то стоящее.