composite-aeson-0.7.5.0: JSON for Vinyl records
Safe HaskellNone
LanguageHaskell2010

Composite.Aeson.Formats.Generic

Synopsis

Documentation

abeJsonFormat :: ToJSON a => Parse e a -> JsonFormat e a Source #

Produce an explicit JsonFormat by using the implicit Aeson ToJSON instance and an explicit aeson-better-errors Parse.

aesonJsonFormat :: (ToJSON a, FromJSON a) => JsonFormat e a Source #

Produce an explicit JsonFormat by using the implicit Aeson FromJSON and ToJSON instances.

If an aeson-better-errors parser is available for a, it's probably better to use abeJsonFormat to get the enhanced error reporting.

jsonArrayFormat :: (t -> [a]) -> ([a] -> Parse e t) -> JsonFormat e a -> JsonFormat e t Source #

JsonFormat for any type which can be converted to/from a list which maps to a JSON array.

jsonObjectFormat :: (t -> [(Text, a)]) -> ([(Text, a)] -> Parse e t) -> JsonFormat e a -> JsonFormat e t Source #

JsonFormat for any type which can be converted to/from a list of pairs which maps to a JSON object.

data SumStyle Source #

Constructors

SumStyleFieldName

Map to a single-field object with the field name determined by the sum branch and the field value being the encoded value for that branch.

SumStyleTypeValue Text Text

Map to a two-field object with fixed field names, the first being the type field and the second beind the value field.

SumStyleMergeType Text

Given that each sum branch maps to a JSON object, add/parse an additional field to that object with the given name.

Instances

Instances details
Eq SumStyle Source # 
Instance details

Defined in Composite.Aeson.Formats.Generic

Show SumStyle Source # 
Instance details

Defined in Composite.Aeson.Formats.Generic

Lift SumStyle Source # 
Instance details

Defined in Composite.Aeson.Formats.Generic

sumFromJson :: SumStyle -> NonEmpty (Text, FromJson e a) -> Parse e a Source #

JsonFormat which maps sum types to JSON according to SumStyle, given a pair of functions to decompose and recompose the sum type.

sumToJson :: SumStyle -> (a -> (Text, Value)) -> a -> Value Source #

JsonFormat which maps sum types to JSON according to SumStyle, given a pair of functions to decompose and recompose the sum type.

jsonSumFormat :: SumStyle -> (a -> (Text, Value)) -> NonEmpty (Text, FromJson e a) -> JsonFormat e a Source #

JsonFormat which maps sum types to JSON according to SumStyle, given a pair of functions to decompose and recompose the sum type.