Как разобрать вложенный JSON с помощью aeson

Я пытаюсь разобрать JSON следующей формы с использованием aeson

{"field":{"name":"..."}}

or

{"tag":{"name":"..."}}

or

{"line":{"number":"..."}}

для построения следующего типа данных

data Rule = Line Integer
          | Field L.ByteString
          | Tag L.ByteString

К сожалению, я сталкиваюсь с двумя проблемами, решения которых я не нашел, а именно:

  1. Как мне анализировать вложенный JSON? Если посмотреть на реализацию (.:) , он использует поиск для извлечения определенного значения ключа. Я не решаюсь делать что-то подобное, потому что, похоже, это слишком сильно зависит от специфики того, как aeson реализует вещи. Я ошибаюсь, полагая, что это проблема?

  2. Как мне использовать правильный конструктор данных в зависимости от того, какой ключ присутствует в JSON? Все мои усилия с ни к чему не привели.

Я бы опубликовал код, который написал до сих пор, но я даже не дошел до того момента, когда у меня есть что-то стоящее.

14
задан hvr 26 July 2011 в 08:35
поделиться