-- 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: -- --
-- 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.
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