-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Compatibility layer for aeson
--   
--   Compatibility layer for aeson
@package aeson-compat
@version 0.3.0.0

-- | Compatibility notices
--   
--   
--   
- decode etc. work as in aeson >=0.9
--   
- but it is generalised to work in any MonadThrow (that is
--   extra)
--   
- .:? works as in aeson <0.10
--   
- .:! works as .:? in aeson ==0.10
--   
- Orphan instances FromJSON Day and FromJSON
--   LocalTime for aeson <0.10
--   
module Data.Aeson.Compat

-- | Like original decode but in arbitrary MonadThrow.
--   
--   Parse a top-level JSON value, i.e. also strings, numbers etc.
decode :: (FromJSON a, MonadThrow m) => ByteString -> m a

-- | Like original decode' but in arbitrary MonadThrow.
decode' :: (FromJSON a, MonadThrow m) => ByteString -> m a

-- | Like original decodeStrict but in arbitrary MonadThrow.
decodeStrict :: (FromJSON a, MonadThrow m) => ByteString -> m a

-- | Like original decodeStrict' but in arbitrary MonadThrow.
decodeStrict' :: (FromJSON a, MonadThrow m) => ByteString -> m a

-- | Exception thrown by decode - family of functions in this
--   module.
newtype AesonException
AesonException :: String -> AesonException

-- | Like decode but returns an error message when decoding fails.
eitherDecode :: FromJSON a => ByteString -> Either String a

-- | Like decode' but returns an error message when decoding fails.
eitherDecode' :: FromJSON a => ByteString -> Either String a

-- | Like decodeStrict but returns an error message when decoding
--   fails.
eitherDecodeStrict :: FromJSON a => ByteString -> Either String a

-- | Like decodeStrict' but returns an error message when decoding
--   fails.
eitherDecodeStrict' :: FromJSON a => ByteString -> Either String a

-- | Retrieve the value associated with the given key of an Object.
--   The result is Nothing if the key is not present, or
--   empty if the value cannot be converted to the desired type.
--   
--   This accessor is most useful if the key and value can be absent from
--   an object without affecting its validity. If the key and value are
--   mandatory, use .: instead.
--   
--   This operator is consistent in aeson >=0.7 &&
--   <0.11
(.:?) :: (FromJSON a) => Object -> Text -> Parser (Maybe a)

-- | Like .:?, but the resulting parser will fail, if the key is
--   present but is Null.
(.:!) :: (FromJSON a) => Object -> Text -> Parser (Maybe a)
instance GHC.Show.Show Data.Aeson.Compat.AesonException
instance GHC.Exception.Exception Data.Aeson.Compat.AesonException
