aeson-2.0.2.0: Fast JSON parsing and encoding
Safe Haskell None
Language Haskell2010

Data.Aeson.Encoding.Internal

Synopsis

Encoding

newtype Encoding' tag Source #

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

Instances details
GToJSON' Encoding arity ( U1 :: Type -> Type ) Source #
Instance details

Defined in Data.Aeson.Types.ToJSON

ToJSON1 f => GToJSON' Encoding One ( Rec1 f) Source #
Instance details

Defined in Data.Aeson.Types.ToJSON

(EncodeProduct arity a, EncodeProduct arity b) => GToJSON' Encoding arity (a :*: b) Source #
Instance details

Defined in Data.Aeson.Types.ToJSON

ToJSON a => GToJSON' Encoding arity ( K1 i a :: Type -> Type ) Source #
Instance details

Defined in Data.Aeson.Types.ToJSON

( ToJSON1 f, GToJSON' Encoding One g) => GToJSON' Encoding One (f :.: g) Source #
Instance details

Defined in Data.Aeson.Types.ToJSON

Eq ( Encoding' a) Source #
Instance details

Defined in Data.Aeson.Encoding.Internal

Ord ( Encoding' a) Source #
Instance details

Defined in Data.Aeson.Encoding.Internal

Show ( Encoding' a) Source #
Instance details

Defined in Data.Aeson.Encoding.Internal

unsafeToEncoding :: Builder -> Encoding' a Source #

Make Encoding from Builder.

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

data Series Source #

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)

pairs :: Series -> Encoding Source #

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

Predicates

Encoding constructors

dict Source #

Arguments

:: (k -> Encoding' Key )

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

Encode as a tuple.

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

data InArray Source #

Type tag for tuples contents, see tuple .

Decimal numbers

double :: Double -> Encoding Source #

>>> double 42
"42.0"
>>> double (0/0)
"null"
>>> double (1/0)
"\"+inf\""
>>> double (-23/0)
"\"-inf\""

Decimal numbers as Text

doubleText :: Double -> Encoding' a Source #

>>> doubleText 42
"\"42.0\""
>>> doubleText (0/0)
"\"NaN\""
>>> doubleText (1/0)
"\"+inf\""
>>> doubleText (-23/0)
"\"-inf\""

Time

value

JSON tokens