Разбор массива с помощью Haskell Aeson

У меня есть документ JSON, который выглядит так:

{ "series": [[1,2], [2,3], [3,4]] }

Я хотел бы разобрать это на набор типов данных:

data Series = Series [DataPoint]
data DataPoint = DataPoint Int Int  -- x and y

У меня много проблем, пытаясь написатьFromJSON экземпляр для DataPoint.

instance FromJSON DataPoint where
  parseJSON (Array a) = ???

Я пытался использовать Lens для уничтожения записи DataPoint, но она не компилируется:

case a ^.. values . _Integer of -}
  [x,y] -> DataPoint <
case a ^.. values . _Integer of -}
  [x,y] -> DataPoint <$> x <*> y
  _     -> mzero
gt; x <*> y _ -> mzero

Это терпит неудачу с этой ошибкой (первые две строки, которые я получаю даже без обмана объектива, просто пытаюсь создатьDataPoint <$> 1 <*> 2):

Couldn't match type ‘aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser
                       Integer’
              with ‘Integer’
Expected type: (aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser
                  Integer
                -> Const
                     (Data.Monoid.Endo
                        [aeson-0.7.0.6:Data.Aeson.Types.Internal.Parse
                     (aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser I
               -> Value
               -> Const
                    (Data.Monoid.Endo
                       [aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser
                    Value
  Actual type: (Integer
                -> Const
                     (Data.Monoid.Endo
                        [aeson-0.7.0.6:Data.Aeson.Types.Internal.Parse
                     Integer)
               -> Value
               -> Const
                    (Data.Monoid.Endo
                       [aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser
                    Value
In the second argument of ‘(.)’, namely ‘_Integer’
In the second argument of ‘(^..)’, namely ‘values . _Integer’

Есть лучший способ сделать это?

У кого-нибудь есть пример разбора массивов значений в более детальную структуру?

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

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