| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Composite.Aeson.Formats.Generic
Synopsis
- abeJsonFormat :: ToJSON a => Parse e a -> JsonFormat e a
- aesonJsonFormat :: (ToJSON a, FromJSON a) => JsonFormat e a
- jsonArrayFormat :: (t -> [a]) -> ([a] -> Parse e t) -> JsonFormat e a -> JsonFormat e t
- jsonObjectFormat :: (t -> [(Text, a)]) -> ([(Text, a)] -> Parse e t) -> JsonFormat e a -> JsonFormat e t
- data SumStyle
- sumFromJson :: SumStyle -> NonEmpty (Text, FromJson e a) -> Parse e a
- sumToJson :: SumStyle -> (a -> (Text, Value)) -> a -> Value
- jsonSumFormat :: SumStyle -> (a -> (Text, Value)) -> NonEmpty (Text, FromJson e a) -> JsonFormat e a
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.
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. |
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.