aeson-0.3.2.13: Fast JSON parsing and encoding

Portabilityportable
Stabilityexperimental
MaintainerBryan O'Sullivan <bos@mailrank.com>

Data.Aeson

Description

Types and functions for working efficiently with JSON data.

(A note on naming: in Greek mythology, Aeson was the father of Jason.)

Synopsis

Core JSON types

data Value Source

A JSON value represented as a Haskell value.

Constructors

Instances

type Array = Vector Value Source

A JSON "array" (sequence).

type Object = Map Text Value Source

A JSON "object" (key/value map).

Convenience types

newtype DotNetTime Source

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.

Constructors

Instances

Type conversion

class FromJSON a whereSource

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 

This example assumes the OverloadedStrings language option is enabled.

Methods

parseJSON :: Value -> Parser aSource

Instances

data Result a Source

The result of running a Parser .

Constructors

Instances

fromJSON :: FromJSON a => Value -> Result aSource

Convert a value from JSON, failing if the types do not match.

class ToJSON a whereSource

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]

This example assumes the OverloadedStrings language option is enabled.

Methods

toJSON :: a -> Value Source

Instances

Constructors and accessors

(.=) :: ToJSON a => Text -> a -> Pair Source

Construct a Pair from a key and a value.

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

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

object :: [Pair] -> Value Source

Create a Value from a list of name/value Pair s. If duplicate keys arise, earlier keys and their associated values win.

Encoding and parsing

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

Efficiently serialize a JSON value as a lazy ByteString .

json :: Parser Value Source

Parse a top-level JSON value. This must be either an object or an array.

AltStyle によって変換されたページ (->オリジナル) /