Разбор вложенного массива объектов с помощью Aeson

Я хочу проанализировать объект JSON и создать JSONEvent с заданным именем и args

Я использую Aeson, и сейчас я застрял при преобразовании "аргументов": [{"a": "b"}] в [(String, String)] .

Заранее спасибо!

{-# LANGUAGE OverloadedStrings #-}

import Control.Applicative
import Data.Aeson

data JSONEvent = JSONEvent [(String, String)] (Maybe String) deriving Show

instance FromJSON JSONEvent where
  parseJSON j = do
    o <- parseJSON j
    name <- o .:? "name"
    args <- o .:? "args" .!= []
    return $ JSONEvent args name

let decodedEvent = decode "{\"name\":\"edwald\",\"args\":[{\"a\": \"b\"}]}" :: Maybe JSONEvent
5
задан ehird 6 January 2012 в 16:33
поделиться