aeson-1.1.2.0: Fast JSON parsing and encoding

Safe HaskellNone
LanguageHaskell2010

Data.Aeson.Encoding.Internal

Contents

Synopsis

Encoding

newtype Encoding' tag #

An encoding of a JSON value.

tag represents which kind of JSON the Encoding is encoding to, we reuse Text and Value as tags here.

Constructors

Encoding 

Fields

Instances

Eq (Encoding' a) # 

Methods

(==) :: Encoding' a -> Encoding' a -> Bool #

(/=) :: Encoding' a -> Encoding' a -> Bool #

Ord (Encoding' a) # 
Show (Encoding' a) # 

type Encoding = Encoding' Value #

Often used synonnym for Encoding'.

unsafeToEncoding :: Builder -> Encoding' a #

Make Encoding from Builder.

Use with care! You have to make sure that the passed Builder is a valid JSON Encoding!

data Series #

A series of values that, when encoded, should be separated by commas. Since 0.11.0.0, the .= operator is overloaded to create either (Text, Value) or Series. You can use Series when encoding directly to a bytestring builder as in the following example:

toEncoding (Person name age) = pairs ("name" .= name <> "age" .= age)

Constructors

Empty 
Value (Encoding' Series) 

Instances

pairs :: Series -> Encoding #

Encode a series of key/value pairs, separated by commas.

Predicates

Encoding constructors

list :: (a -> Encoding) -> [a] -> Encoding #

dict #

Arguments

:: (k -> Encoding' Text)

key encoding

-> (v -> Encoding)

value encoding

-> (forall a. (k -> v -> a -> a) -> a -> m -> a)

foldrWithKey - indexed fold

-> m

container

-> Encoding 

Encode as JSON object

tuple :: Encoding' InArray -> Encoding #

Encode as a tuple.

@ toEncoding (X a b c) = tuple $ toEncoding a >*< toEncoding b >*< toEncoding c

(>*<) :: Encoding' a -> Encoding' b -> Encoding' InArray infixr 6 #

See tuple.

data InArray #

Type tag for tuples contents, see tuple.

(><) :: Encoding' a -> Encoding' a -> Encoding' a infixr 6 #

Decimal numbers

Decimal numbers as Text

Time

day :: Day -> Encoding' a #

value

JSON tokens