| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Composite.Aeson.Enum
Synopsis
- enumJsonFormat :: forall e a. (Show a, Ord a, Generic a, ConNames (Rep a), Enum' (Rep a)) => String -> JsonFormat e a
- enumMapJsonFormat :: Show a => (Text -> Maybe a) -> (a -> Maybe Text) -> String -> JsonFormat e a
Documentation
enumJsonFormat :: forall e a. (Show a, Ord a, Generic a, ConNames (Rep a), Enum' (Rep a)) => String -> JsonFormat e a Source #
For some type a which represents an enumeration (i.e. all nullary constructors) generate a JsonFormat which maps that type to strings in JSON.
Each constructor will be mapped to a string with the same value as its name with some prefix removed.
For example, given:
data MyEnum = MyEnumFoo | MyEnumBar myEnumFormat :: JsonFormat e MyEnum myEnumFormat = enumJsonFormat "MyEnum"
Then:
toJsonWithFormat myEnumFormat MyEnumFoo == Aeson.String "Foo"
enumMapJsonFormat :: Show a => (Text -> Maybe a) -> (a -> Maybe Text) -> String -> JsonFormat e a Source #
For some type a which bidirectional mapping functions can be provided, produce a JsonFormat which maps to JSON strings.