aeson-compat-0.3.6: Compatibility layer for aeson

Copyright(C) 2015 Oleg Grenrus
LicenseBSD3
MaintainerOleg Grenrus <oleg.grenrus@iki.fi>
Safe HaskellNone
LanguageHaskell2010

Data.Aeson.Compat

Contents

Description

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
  • Encoding related functionality is not added. It's present only with aeson >=0.10

Synopsis

Encoding and decoding

Direct encoding

decode :: (FromJSON a, MonadThrow m) => ByteString -> m a Source #

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 Source #

Like original decode' but in arbitrary MonadThrow.

encode :: ToJSON a => a -> ByteString #

Variants for strict bytestrings

decodeStrict :: (FromJSON a, MonadThrow m) => ByteString -> m a Source #

Like original decodeStrict but in arbitrary MonadThrow.

decodeStrict' :: (FromJSON a, MonadThrow m) => ByteString -> m a Source #

Like original decodeStrict' but in arbitrary MonadThrow.

Core JSON types

data Value :: * #

Constructors

Object ~Object 
Array ~Array 
String ~Text 
Number ~Scientific 
Bool ~Bool 
Null 

Instances

Eq Value 

Methods

(==) :: Value -> Value -> Bool #

(/=) :: Value -> Value -> Bool #

Data Value 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Value -> c Value #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Value #

toConstr :: Value -> Constr #

dataTypeOf :: Value -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Value) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Value) #

gmapT :: (forall b. Data b => b -> b) -> Value -> Value #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r #

gmapQ :: (forall d. Data d => d -> u) -> Value -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Value -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Value -> m Value #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value #

Read Value 
Show Value 

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

IsString Value 

Methods

fromString :: String -> Value #

Lift Value 

Methods

lift :: Value -> Q Exp #

NFData Value 

Methods

rnf :: Value -> () #

Hashable Value 

Methods

hashWithSalt :: Int -> Value -> Int

hash :: Value -> Int

type Array = Vector Value #

type Object = HashMap Text Value #

Convenience types

Type conversion

class FromJSON a where #

Methods

parseJSON :: Value -> Parser a #

data Result a :: * -> * #

Constructors

Error String 
Success a 

Instances

Monad Result 

Methods

(>>=) :: Result a -> (a -> Result b) -> Result b #

(>>) :: Result a -> Result b -> Result b #

return :: a -> Result a #

fail :: String -> Result a #

Functor Result 

Methods

fmap :: (a -> b) -> Result a -> Result b #

(<$) :: a -> Result b -> Result a #

MonadFail Result 

Methods

fail :: String -> Result a #

Applicative Result 

Methods

pure :: a -> Result a #

(<*>) :: Result (a -> b) -> Result a -> Result b #

(*>) :: Result a -> Result b -> Result b #

(<*) :: Result a -> Result b -> Result a #

Foldable Result 

Methods

fold :: Monoid m => Result m -> m #

foldMap :: Monoid m => (a -> m) -> Result a -> m #

foldr :: (a -> b -> b) -> b -> Result a -> b #

foldr' :: (a -> b -> b) -> b -> Result a -> b #

foldl :: (b -> a -> b) -> b -> Result a -> b #

foldl' :: (b -> a -> b) -> b -> Result a -> b #

foldr1 :: (a -> a -> a) -> Result a -> a #

foldl1 :: (a -> a -> a) -> Result a -> a #

toList :: Result a -> [a] #

null :: Result a -> Bool #

length :: Result a -> Int #

elem :: Eq a => a -> Result a -> Bool #

maximum :: Ord a => Result a -> a #

minimum :: Ord a => Result a -> a #

sum :: Num a => Result a -> a #

product :: Num a => Result a -> a #

Traversable Result 

Methods

traverse :: Applicative f => (a -> f b) -> Result a -> f (Result b) #

sequenceA :: Applicative f => Result (f a) -> f (Result a) #

mapM :: Monad m => (a -> m b) -> Result a -> m (Result b) #

sequence :: Monad m => Result (m a) -> m (Result a) #

Alternative Result 

Methods

empty :: Result a #

(<|>) :: Result a -> Result a -> Result a #

some :: Result a -> Result [a] #

many :: Result a -> Result [a] #

MonadPlus Result 

Methods

mzero :: Result a #

mplus :: Result a -> Result a -> Result a #

Eq a => Eq (Result a) 

Methods

(==) :: Result a -> Result a -> Bool #

(/=) :: Result a -> Result a -> Bool #

Show a => Show (Result a) 

Methods

showsPrec :: Int -> Result a -> ShowS #

show :: Result a -> String #

showList :: [Result a] -> ShowS #

Semigroup (Result a) 

Methods

(<>) :: Result a -> Result a -> Result a #

sconcat :: NonEmpty (Result a) -> Result a #

stimes :: Integral b => b -> Result a -> Result a #

Monoid (Result a) 

Methods

mempty :: Result a #

mappend :: Result a -> Result a -> Result a #

mconcat :: [Result a] -> Result a #

NFData a => NFData (Result a) 

Methods

rnf :: Result a -> () #

class ToJSON a where #

Methods

toJSON :: a -> Value #

toEncoding :: a -> Encoding #

class KeyValue kv where #

Minimal complete definition

(.=)

Methods

(.=) :: ToJSON v => Text -> v -> kv #

Generic JSON classes and options

class GFromJSON f where #

Minimal complete definition

gParseJSON

Methods

gParseJSON :: Options -> Value -> Parser (f a) #

class GToJSON f where #

Minimal complete definition

gToJSON

Methods

gToJSON :: Options -> f a -> Value #

class GToEncoding f where #

Minimal complete definition

gToEncoding

Methods

gToEncoding :: Options -> f a -> Encoding #

genericToJSON :: (Generic a, GToJSON (Rep a)) => Options -> a -> Value #

genericToEncoding :: (Generic a, GToEncoding (Rep a)) => Options -> a -> Encoding #

genericParseJSON :: (Generic a, GFromJSON (Rep a)) => Options -> Value -> Parser a #

defaultOptions :: Options #

Inspecting Values

withObject :: String -> (Object -> Parser a) -> Value -> Parser a #

withText :: String -> (Text -> Parser a) -> Value -> Parser a #

withArray :: String -> (Array -> Parser a) -> Value -> Parser a #

withNumber :: String -> (Number -> Parser a) -> Value -> Parser a #

withScientific :: String -> (Scientific -> Parser a) -> Value -> Parser a #

withBool :: String -> (Bool -> Parser a) -> Value -> Parser a #

Constructors and accessors

foldable :: (Foldable t, ToJSON a) => t a -> Encoding #

(.:) :: FromJSON a => Object -> Text -> Parser a #

(.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a) Source #

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) #

(.!=) :: Parser (Maybe a) -> a -> Parser a #

object :: [Pair] -> Value #

Parsing

json :: Parser Value #

json' :: Parser Value #

value :: Parser Value #

value' :: Parser Value #

data Parser a :: * -> * #

Instances

Monad Parser 

Methods

(>>=) :: Parser a -> (a -> Parser b) -> Parser b #

(>>) :: Parser a -> Parser b -> Parser b #

return :: a -> Parser a #

fail :: String -> Parser a #

Functor Parser 

Methods

fmap :: (a -> b) -> Parser a -> Parser b #

(<$) :: a -> Parser b -> Parser a #

MonadFail Parser 

Methods

fail :: String -> Parser a #

Applicative Parser 

Methods

pure :: a -> Parser a #

(<*>) :: Parser (a -> b) -> Parser a -> Parser b #

(*>) :: Parser a -> Parser b -> Parser b #

(<*) :: Parser a -> Parser b -> Parser a #

Alternative Parser 

Methods

empty :: Parser a #

(<|>) :: Parser a -> Parser a -> Parser a #

some :: Parser a -> Parser [a] #

many :: Parser a -> Parser [a] #

MonadPlus Parser 

Methods

mzero :: Parser a #

mplus :: Parser a -> Parser a -> Parser a #

Semigroup (Parser a) 

Methods

(<>) :: Parser a -> Parser a -> Parser a #

sconcat :: NonEmpty (Parser a) -> Parser a #

stimes :: Integral b => b -> Parser a -> Parser a #

Monoid (Parser a) 

Methods

mempty :: Parser a #

mappend :: Parser a -> Parser a -> Parser a #

mconcat :: [Parser a] -> Parser a #