module Data.Aeson.Toolkit where
import Data.Text (Text)
import qualified Data.ByteString.Lazy as L
import Control.Failure
import Data.Aeson as Aeson
import Data.Aeson.Types
instance Failure String Parser where
failure = fail
instance Failure String Result where
failure = Error
decode :: (FromJSON a, Failure String m) => L.ByteString -> m a
decode = either failure return . eitherDecode
decode' :: (FromJSON a, Failure String m) => L.ByteString -> m a
decode' = either failure return . eitherDecode'
(.:) :: (Failure String m, FromJSON a) => Object -> Text -> m a
o .: k = (either failure return . parseEither (Aeson..: k)) o