-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Fast JSON parsing and generation -- -- A JSON parsing and generation library optimized for ease of use and -- high performance. -- -- Parsing performance with GHC 6.12.3 on a late 2010 MacBook Pro -- (2.66GHz Core i7), for mostly-English tweets from Twitter's JSON -- search API: -- -- -- -- Handling heavily-escaped text is a little more work. Here is parsing -- performance with Japanese tweets, where much of the text is entirely -- Unicode-escaped: -- -- -- -- Encoding performance on the same machine and data: -- -- -- -- With GHC 7.0.2, the story is mixed: parsing is 20-40% slower than GHC -- 6.12.3, while encoding performance ranges from about the same to twice -- as fast (on numeric data). -- -- (A note on naming: in Greek mythology, Aeson was the father of Jason.) @package aeson @version 0.3.2.3 -- | Types for working with JSON data. module Data.Aeson.Types -- | A JSON value represented as a Haskell value. data Value Object :: Object -> Value Array :: Array -> Value String :: Text -> Value Number :: Number -> Value Bool :: !Bool -> Value Null :: Value -- | A JSON "array" (sequence). type Array = Vector Value -- | The empty array. emptyArray :: Value -- | A key/value pair for an Object. type Pair = (Text, Value) -- | A JSON "object" (key/value map). type Object = Map Text Value -- | The empty object. emptyObject :: Value -- | A newtype wrapper for UTCTime that uses the same non-standard -- serialization format as Microsoft .NET, whose System.DateTime -- type is by default serialized to JSON as in the following example: -- --
--   /Date(1302547608878)/
--   
-- -- The number represents milliseconds since the Unix epoch. newtype DotNetTime DotNetTime :: UTCTime -> DotNetTime fromDotNetTime :: DotNetTime -> UTCTime -- | Fail parsing due to a type mismatch, with a descriptive message. typeMismatch :: String -> Value -> Parser a -- | A continuation-based parser type. data Parser a -- | The result of running a Parser. data Result a Error :: String -> Result a Success :: a -> Result a -- | A type that can be converted from JSON, with the possibility of -- failure. -- -- When writing an instance, use mzero or fail to make a -- conversion fail, e.g. if an Object is missing a required key, -- or the value is of the wrong type. -- -- An example type and instance: -- --
--   data Coord { x :: Double, y :: Double }
--   
--   instance FromJSON Coord where
--      parseJSON (Object v) = Coord <$>
--                            v .: "x" <*>
--                            v .: "y"
--   
--   -- A non-Object value is of the wrong type, so use mzero to fail.
--      parseJSON _          = mzero
--   
class FromJSON a parseJSON :: FromJSON a => Value -> Parser a -- | Convert a value from JSON, failing if the types do not match. fromJSON :: FromJSON a => Value -> Result a -- | Run a Parser. parse :: (a -> Parser b) -> a -> Result b -- | Run a Parser with an Either result type. parseEither :: (a -> Parser b) -> a -> Either String b -- | Run a Parser with a Maybe result type. parseMaybe :: (a -> Parser b) -> a -> Maybe b -- | A type that can be converted to JSON. -- -- An example type and instance: -- --
--   data Coord { x :: Double, y :: Double }
--   
--   instance ToJSON Coord where
--      toJSON (Coord x y) = object ["x" .= x, "y" .= y]
--   
class ToJSON a toJSON :: ToJSON a => a -> Value -- | Construct a Pair from a key and a value. (.=) :: ToJSON a => Text -> a -> Pair -- | Retrieve the value associated with the given key of an Object. -- The result is empty if the key is not present or the value -- cannot be converted to the desired type. -- -- This accessor is appropriate if the key and value must be -- present in an object for it to be valid. If the key and value are -- optional, use '(.:?)' instead. (.:) :: FromJSON a => Object -> Text -> Parser 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. (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a) -- | Create a Value from a list of name/value Pairs. If -- duplicate keys arise, earlier keys and their associated values win. object :: [Pair] -> Value instance [incoherent] Typeable1 Result instance [incoherent] Typeable Value instance [incoherent] Typeable DotNetTime instance [incoherent] Eq a => Eq (Result a) instance [incoherent] Show a => Show (Result a) instance [incoherent] Eq Value instance [incoherent] Show Value instance [incoherent] Data Value instance [incoherent] Eq DotNetTime instance [incoherent] Ord DotNetTime instance [incoherent] Read DotNetTime instance [incoherent] Show DotNetTime instance [incoherent] FormatTime DotNetTime instance [incoherent] FromJSON a => FromJSON (Last a) instance [incoherent] ToJSON a => ToJSON (Last a) instance [incoherent] FromJSON a => FromJSON (First a) instance [incoherent] ToJSON a => ToJSON (First a) instance [incoherent] FromJSON a => FromJSON (Dual a) instance [incoherent] ToJSON a => ToJSON (Dual a) instance [incoherent] (FromJSON a, FromJSON b, FromJSON c) => FromJSON (a, b, c) instance [incoherent] (ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) instance [incoherent] (FromJSON a, FromJSON b) => FromJSON (a, b) instance [incoherent] (ToJSON a, ToJSON b) => ToJSON (a, b) instance [incoherent] FromJSON UTCTime instance [incoherent] ToJSON UTCTime instance [incoherent] FromJSON DotNetTime instance [incoherent] ToJSON DotNetTime instance [incoherent] FromJSON Value instance [incoherent] ToJSON Value instance [incoherent] FromJSON v => FromJSON (HashMap ByteString v) instance [incoherent] ToJSON v => ToJSON (HashMap ByteString v) instance [incoherent] FromJSON v => FromJSON (HashMap ByteString v) instance [incoherent] ToJSON v => ToJSON (HashMap ByteString v) instance [incoherent] FromJSON v => FromJSON (HashMap String v) instance [incoherent] ToJSON v => ToJSON (HashMap String v) instance [incoherent] FromJSON v => FromJSON (HashMap Text v) instance [incoherent] ToJSON v => ToJSON (HashMap Text v) instance [incoherent] FromJSON v => FromJSON (HashMap Text v) instance [incoherent] ToJSON v => ToJSON (HashMap Text v) instance [incoherent] FromJSON v => FromJSON (Map ByteString v) instance [incoherent] ToJSON v => ToJSON (Map ByteString v) instance [incoherent] FromJSON v => FromJSON (Map ByteString v) instance [incoherent] ToJSON v => ToJSON (Map ByteString v) instance [incoherent] FromJSON v => FromJSON (Map String v) instance [incoherent] ToJSON v => ToJSON (Map String v) instance [incoherent] FromJSON v => FromJSON (Map Text v) instance [incoherent] ToJSON v => ToJSON (Map Text v) instance [incoherent] FromJSON v => FromJSON (Map Text v) instance [incoherent] ToJSON v => ToJSON (Map Text v) instance [incoherent] FromJSON IntSet instance [incoherent] ToJSON IntSet instance [incoherent] (Ord a, FromJSON a) => FromJSON (Set a) instance [incoherent] ToJSON a => ToJSON (Set a) instance [incoherent] FromJSON a => FromJSON (Vector a) instance [incoherent] ToJSON a => ToJSON (Vector a) instance [incoherent] FromJSON a => FromJSON [a] instance [incoherent] ToJSON a => ToJSON [a] instance [incoherent] FromJSON ByteString instance [incoherent] ToJSON ByteString instance [incoherent] FromJSON ByteString instance [incoherent] ToJSON ByteString instance [incoherent] FromJSON Text instance [incoherent] ToJSON Text instance [incoherent] FromJSON Text instance [incoherent] ToJSON Text instance [incoherent] FromJSON Word64 instance [incoherent] ToJSON Word64 instance [incoherent] FromJSON Word32 instance [incoherent] ToJSON Word32 instance [incoherent] FromJSON Word16 instance [incoherent] ToJSON Word16 instance [incoherent] FromJSON Word8 instance [incoherent] ToJSON Word8 instance [incoherent] FromJSON Word instance [incoherent] ToJSON Word instance [incoherent] FromJSON Int64 instance [incoherent] ToJSON Int64 instance [incoherent] FromJSON Int32 instance [incoherent] ToJSON Int32 instance [incoherent] FromJSON Int16 instance [incoherent] ToJSON Int16 instance [incoherent] FromJSON Int8 instance [incoherent] ToJSON Int8 instance [incoherent] FromJSON Integer instance [incoherent] ToJSON Integer instance [incoherent] FromJSON Int instance [incoherent] ToJSON Int instance [incoherent] FromJSON (Ratio Integer) instance [incoherent] ToJSON (Ratio Integer) instance [incoherent] FromJSON Float instance [incoherent] ToJSON Float instance [incoherent] FromJSON Number instance [incoherent] ToJSON Number instance [incoherent] FromJSON Double instance [incoherent] ToJSON Double instance [incoherent] FromJSON Char instance [incoherent] ToJSON Char instance [incoherent] FromJSON [Char] instance [incoherent] ToJSON [Char] instance [incoherent] FromJSON () instance [incoherent] ToJSON () instance [incoherent] FromJSON Bool instance [incoherent] ToJSON Bool instance [incoherent] (FromJSON a, FromJSON b) => FromJSON (Either a b) instance [incoherent] (ToJSON a, ToJSON b) => ToJSON (Either a b) instance [incoherent] FromJSON a => FromJSON (Maybe a) instance [incoherent] ToJSON a => ToJSON (Maybe a) instance [incoherent] IsString Value instance [incoherent] NFData Value instance [incoherent] Monoid (Parser a) instance [incoherent] MonadPlus Parser instance [incoherent] Alternative Parser instance [incoherent] Applicative Parser instance [incoherent] Functor Parser instance [incoherent] Monad Parser instance [incoherent] Monoid (Result a) instance [incoherent] Alternative Result instance [incoherent] MonadPlus Result instance [incoherent] Applicative Result instance [incoherent] Monad Result instance [incoherent] Functor Result instance [incoherent] NFData a => NFData (Result a) -- | JSON handling using Data.Generics. -- -- This is based on the Text.JSON.Generic package originally -- written by Lennart Augustsson. module Data.Aeson.Generic fromJSON :: Data a => Value -> Result a toJSON :: Data a => a -> Value -- | Efficiently and correctly parse a JSON string. module Data.Aeson.Parser -- | Parse a top-level JSON value. This must be either an object or an -- array. json :: Parser Value -- | Parse any JSON value. Use json in preference to this function -- if you are parsing data from an untrusted source. value :: Parser Value -- | Efficiently serialize a JSON value as a lazy ByteString. module Data.Aeson.Encode -- | Encode a JSON value to a Builder. fromValue :: Value -> Builder -- | Efficiently serialize a JSON value as a lazy ByteString. encode :: ToJSON a => a -> ByteString -- | Types and functions for working efficiently with JSON data. -- -- (A note on naming: in Greek mythology, Aeson was the father of Jason.) module Data.Aeson -- | A JSON value represented as a Haskell value. data Value Object :: Object -> Value Array :: Array -> Value String :: Text -> Value Number :: Number -> Value Bool :: !Bool -> Value Null :: Value -- | A JSON "array" (sequence). type Array = Vector Value -- | A JSON "object" (key/value map). type Object = Map Text Value -- | A newtype wrapper for UTCTime that uses the same non-standard -- serialization format as Microsoft .NET, whose System.DateTime -- type is by default serialized to JSON as in the following example: -- --
--   /Date(1302547608878)/
--   
-- -- The number represents milliseconds since the Unix epoch. newtype DotNetTime DotNetTime :: UTCTime -> DotNetTime fromDotNetTime :: DotNetTime -> UTCTime -- | A type that can be converted from JSON, with the possibility of -- failure. -- -- When writing an instance, use mzero or fail to make a -- conversion fail, e.g. if an Object is missing a required key, -- or the value is of the wrong type. -- -- An example type and instance: -- --
--   data Coord { x :: Double, y :: Double }
--   
--   instance FromJSON Coord where
--      parseJSON (Object v) = Coord <$>
--                            v .: "x" <*>
--                            v .: "y"
--   
--   -- A non-Object value is of the wrong type, so use mzero to fail.
--      parseJSON _          = mzero
--   
class FromJSON a parseJSON :: FromJSON a => Value -> Parser a -- | The result of running a Parser. data Result a Error :: String -> Result a Success :: a -> Result a -- | Convert a value from JSON, failing if the types do not match. fromJSON :: FromJSON a => Value -> Result a -- | A type that can be converted to JSON. -- -- An example type and instance: -- --
--   data Coord { x :: Double, y :: Double }
--   
--   instance ToJSON Coord where
--      toJSON (Coord x y) = object ["x" .= x, "y" .= y]
--   
class ToJSON a toJSON :: ToJSON a => a -> Value -- | Construct a Pair from a key and a value. (.=) :: ToJSON a => Text -> a -> Pair -- | Retrieve the value associated with the given key of an Object. -- The result is empty if the key is not present or the value -- cannot be converted to the desired type. -- -- This accessor is appropriate if the key and value must be -- present in an object for it to be valid. If the key and value are -- optional, use '(.:?)' instead. (.:) :: FromJSON a => Object -> Text -> Parser 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. (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a) -- | Create a Value from a list of name/value Pairs. If -- duplicate keys arise, earlier keys and their associated values win. object :: [Pair] -> Value -- | Efficiently serialize a JSON value as a lazy ByteString. encode :: ToJSON a => a -> ByteString -- | Parse a top-level JSON value. This must be either an object or an -- array. json :: Parser Value