deriving-aeson-0.2.9: Type driven generic aeson instance customisation

Safe Haskell | Safe-Inferred
Language | Haskell2010

Deriving.Aeson.Stock

Contents

- Reexports

Synopsis

- type Prefixed str = CustomJSON '[FieldLabelModifier (StripPrefix str)]
- type PrefixedSnake str = CustomJSON '[FieldLabelModifier '[StripPrefix str, CamelToSnake]]
- type Snake = CustomJSON '[FieldLabelModifier CamelToSnake]
- type Vanilla = CustomJSON ('[] :: [Type])
- newtype CustomJSON t a = CustomJSON {
  - unCustomJSON :: a
  }
- class FromJSON a
- class ToJSON a
- class Generic a

# Documentation

type Prefixed str = CustomJSON '[FieldLabelModifier (StripPrefix str)] Source #

Field names are prefixed by `str`; strip them from JSON representation

type PrefixedSnake str = CustomJSON '[FieldLabelModifier '[StripPrefix str, CamelToSnake]] Source #

Strip `str` prefices and convert from CamelCase to snake_case

type Snake = CustomJSON '[FieldLabelModifier CamelToSnake] Source #

Convert from CamelCase to snake_case

type Vanilla = CustomJSON ('[] :: [Type]) Source #

No customisation

# Reexports

newtype CustomJSON t a Source #

A newtype wrapper which gives FromJSON/ToJSON instances with modified options.

Constructors

CustomJSON |

Fields

- unCustomJSON :: a

#### Instances

Instances details

(AesonOptions t, Generic a, GFromJSON Zero (Rep a)) => FromJSON (CustomJSON t a) Source # |
Instance details Defined in Deriving.Aeson Methods parseJSON :: Value -> Parser (CustomJSON t a) Source # parseJSONList :: Value -> Parser [CustomJSON t a] Source #
(AesonOptions t, Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (CustomJSON t a) Source # |
Instance details Defined in Deriving.Aeson Methods toJSON :: CustomJSON t a -> Value Source # toEncoding :: CustomJSON t a -> Encoding Source # toJSONList :: [CustomJSON t a] -> Value Source # toEncodingList :: [CustomJSON t a] -> Encoding Source #

class FromJSON a Source #

A type that can be converted from JSON, with the possibility of failure.

In many cases, you can get the compiler to generate parsing code for you (see below). To begin, let's cover writing an instance by hand.

There are various reasons a conversion could fail. For example, an `Object` could be missing a required key, an `Array` could be of the wrong size, or a value could be of an incompatible type.

The basic ways to signal a failed conversion are as follows:

- `fail` yields a custom error message: it is the recommended way of reporting a failure;
- `empty` (or `mzero`) is uninformative: use it when the error is meant to be caught by some `(`<|>`)`;
- `typeMismatch` can be used to report a failure when the encountered value is not of the expected JSON type; `unexpected` is an appropriate alternative when more than one type may be expected, or to keep the expected type implicit.

`prependFailure` (or `modifyFailure`) add more information to a parser's error messages.

An example type and instance using `typeMismatch` and `prependFailure`:

    -- Allow ourselves to write Text literals.
    {-# LANGUAGE OverloadedStrings #-}

    data Coord = Coord { x :: Double, y :: Double }

    instance FromJSON Coord where
        parseJSON (Object v) = Coord
            <$> v .: "x"
            <*> v .: "y"

        -- We do not expect a non-Object value here.
        -- We could use empty to fail, but typeMismatch
        -- gives a much more informative error message.
        parseJSON invalid    =
            prependFailure "parsing Coord failed, "
                (typeMismatch "Object" invalid)

For this common case of only being concerned with a single type of JSON value, the functions `withObject`, `withScientific`, etc. are provided. Their use is to be preferred when possible, since they are more terse. Using `withObject`, we can rewrite the above instance (assuming the same language extension and data type) as:

    instance FromJSON Coord where
        parseJSON = withObject "Coord" $ \v -> Coord
            <$> v .: "x"
            <*> v .: "y"

Instead of manually writing your `FromJSON` instance, there are two options to do it automatically:

- Data.Aeson.TH provides Template Haskell functions which will derive an instance at compile time. The generated instance is optimized for your type so it will probably be more efficient than the following option.
- The compiler can provide a default generic implementation for `parseJSON`.

To use the second, simply add a `deriving `Generic`` clause to your datatype and declare a `FromJSON` instance for your datatype without giving a definition for `parseJSON`.

For example, the previous example can be simplified to just:

    {-# LANGUAGE DeriveGeneric #-}

    import GHC.Generics

    data Coord = Coord { x :: Double, y :: Double } deriving Generic

    instance FromJSON Coord

or using the DerivingVia extension

    deriving via Generically Coord instance FromJSON Coord

The default implementation will be equivalent to `parseJSON = `genericParseJSON` `defaultOptions``; if you need different options, you can customize the generic decoding by defining:

    customOptions = defaultOptions
                    { fieldLabelModifier = map toUpper
                    }

    instance FromJSON Coord where
        parseJSON = genericParseJSON customOptions

#### Instances

Instances details

FromJSON Key |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Key Source # parseJSONList :: Value -> Parser [Key] Source #
FromJSON DotNetTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DotNetTime Source # parseJSONList :: Value -> Parser [DotNetTime] Source #
FromJSON Value |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Value Source # parseJSONList :: Value -> Parser [Value] Source #
FromJSON Version |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Version Source # parseJSONList :: Value -> Parser [Version] Source #
FromJSON Void |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Void Source # parseJSONList :: Value -> Parser [Void] Source #
FromJSON CTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CTime Source # parseJSONList :: Value -> Parser [CTime] Source #
FromJSON Int16 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int16 Source # parseJSONList :: Value -> Parser [Int16] Source #
FromJSON Int32 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int32 Source # parseJSONList :: Value -> Parser [Int32] Source #
FromJSON Int64 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int64 Source # parseJSONList :: Value -> Parser [Int64] Source #
FromJSON Int8 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int8 Source # parseJSONList :: Value -> Parser [Int8] Source #
FromJSON Word16 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word16 Source # parseJSONList :: Value -> Parser [Word16] Source #
FromJSON Word32 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word32 Source # parseJSONList :: Value -> Parser [Word32] Source #
FromJSON Word64 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word64 Source # parseJSONList :: Value -> Parser [Word64] Source #
FromJSON Word8 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word8 Source # parseJSONList :: Value -> Parser [Word8] Source #
FromJSON IntSet |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser IntSet Source # parseJSONList :: Value -> Parser [IntSet] Source #
FromJSON Ordering |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Ordering Source # parseJSONList :: Value -> Parser [Ordering] Source #
FromJSON Scientific |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Scientific Source # parseJSONList :: Value -> Parser [Scientific] Source #
FromJSON Text |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Text Source # parseJSONList :: Value -> Parser [Text] Source #
FromJSON Text |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Text Source # parseJSONList :: Value -> Parser [Text] Source #
FromJSON ShortText | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser ShortText Source # parseJSONList :: Value -> Parser [ShortText] Source #
FromJSON CalendarDiffDays |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CalendarDiffDays Source # parseJSONList :: Value -> Parser [CalendarDiffDays] Source #
FromJSON Day |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Day Source # parseJSONList :: Value -> Parser [Day] Source #
FromJSON Month |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Month Source # parseJSONList :: Value -> Parser [Month] Source #
FromJSON Quarter |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Quarter Source # parseJSONList :: Value -> Parser [Quarter] Source #
FromJSON QuarterOfYear |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser QuarterOfYear Source # parseJSONList :: Value -> Parser [QuarterOfYear] Source #
FromJSON DayOfWeek |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DayOfWeek Source # parseJSONList :: Value -> Parser [DayOfWeek] Source #
FromJSON DiffTime | This instance includes a bounds check to prevent maliciously large inputs to fill up the memory of the target system. You can newtype `Scientific` and provide your own instance using `withScientific` if you want to allow larger inputs.
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DiffTime Source # parseJSONList :: Value -> Parser [DiffTime] Source #
FromJSON NominalDiffTime | This instance includes a bounds check to prevent maliciously large inputs to fill up the memory of the target system. You can newtype `Scientific` and provide your own instance using `withScientific` if you want to allow larger inputs.
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser NominalDiffTime Source # parseJSONList :: Value -> Parser [NominalDiffTime] Source #
FromJSON SystemTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser SystemTime Source # parseJSONList :: Value -> Parser [SystemTime] Source #
FromJSON UTCTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser UTCTime Source # parseJSONList :: Value -> Parser [UTCTime] Source #
FromJSON CalendarDiffTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CalendarDiffTime Source # parseJSONList :: Value -> Parser [CalendarDiffTime] Source #
FromJSON LocalTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser LocalTime Source # parseJSONList :: Value -> Parser [LocalTime] Source #
FromJSON TimeOfDay |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser TimeOfDay Source # parseJSONList :: Value -> Parser [TimeOfDay] Source #

FromJSON ZonedTime

Supported string formats:

`YYYY-MM-DD HH:MM Z` `YYYY-MM-DD HH:MM:SS Z` `YYYY-MM-DD HH:MM:SS.SSS Z`

The first space may instead be a `T`, and the second space is optional. The `Z` represents UTC. The `Z` may be replaced with a time zone offset of the form `+0000` or `-08:00`, where the first two digits are hours, the `:` is optional and the second two digits (also optional) are minutes.

Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser ZonedTime Source # parseJSONList :: Value -> Parser [ZonedTime] Source #
FromJSON UUID |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser UUID Source # parseJSONList :: Value -> Parser [UUID] Source #
FromJSON Integer | This instance includes a bounds check to prevent maliciously large inputs to fill up the memory of the target system. You can newtype `Scientific` and provide your own instance using `withScientific` if you want to allow larger inputs.
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Integer Source # parseJSONList :: Value -> Parser [Integer] Source #
FromJSON Natural |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Natural Source # parseJSONList :: Value -> Parser [Natural] Source #
FromJSON () |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser () Source # parseJSONList :: Value -> Parser [()] Source #
FromJSON Bool |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Bool Source # parseJSONList :: Value -> Parser [Bool] Source #
FromJSON Char |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Char Source # parseJSONList :: Value -> Parser [Char] Source #
FromJSON Double |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Double Source # parseJSONList :: Value -> Parser [Double] Source #
FromJSON Float |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Float Source # parseJSONList :: Value -> Parser [Float] Source #
FromJSON Int |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int Source # parseJSONList :: Value -> Parser [Int] Source #
FromJSON Word |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word Source # parseJSONList :: Value -> Parser [Word] Source #
FromJSON v => FromJSON (KeyMap v) | Since: aeson-2.0.1.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (KeyMap v) Source # parseJSONList :: Value -> Parser [KeyMap v] Source #
FromJSON a => FromJSON (Identity a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Identity a) Source # parseJSONList :: Value -> Parser [Identity a] Source #
FromJSON a => FromJSON (First a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (First a) Source # parseJSONList :: Value -> Parser [First a] Source #
FromJSON a => FromJSON (Last a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Last a) Source # parseJSONList :: Value -> Parser [Last a] Source #
FromJSON a => FromJSON (First a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (First a) Source # parseJSONList :: Value -> Parser [First a] Source #
FromJSON a => FromJSON (Last a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Last a) Source # parseJSONList :: Value -> Parser [Last a] Source #
FromJSON a => FromJSON (Max a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Max a) Source # parseJSONList :: Value -> Parser [Max a] Source #
FromJSON a => FromJSON (Min a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Min a) Source # parseJSONList :: Value -> Parser [Min a] Source #
FromJSON a => FromJSON (WrappedMonoid a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (WrappedMonoid a) Source # parseJSONList :: Value -> Parser [WrappedMonoid a] Source #
FromJSON a => FromJSON (Dual a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Dual a) Source # parseJSONList :: Value -> Parser [Dual a] Source #
(Generic a, GFromJSON Zero (Rep a)) => FromJSON (Generically a) | Since: aeson-2.1.0.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Generically a) Source # parseJSONList :: Value -> Parser [Generically a] Source #
(FromJSON a, Integral a) => FromJSON (Ratio a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Ratio a) Source # parseJSONList :: Value -> Parser [Ratio a] Source #
FromJSON a => FromJSON (IntMap a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (IntMap a) Source # parseJSONList :: Value -> Parser [IntMap a] Source #
FromJSON a => FromJSON (Seq a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Seq a) Source # parseJSONList :: Value -> Parser [Seq a] Source #
(Ord a, FromJSON a) => FromJSON (Set a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Set a) Source # parseJSONList :: Value -> Parser [Set a] Source #
FromJSON v => FromJSON (Tree v) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Tree v) Source # parseJSONList :: Value -> Parser [Tree v] Source #
FromJSON1 f => FromJSON (Fix f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Fix f) Source # parseJSONList :: Value -> Parser [Fix f] Source #
(FromJSON1 f, Functor f) => FromJSON (Mu f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Mu f) Source # parseJSONList :: Value -> Parser [Mu f] Source #
(FromJSON1 f, Functor f) => FromJSON (Nu f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Nu f) Source # parseJSONList :: Value -> Parser [Nu f] Source #
FromJSON a => FromJSON (DNonEmpty a) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (DNonEmpty a) Source # parseJSONList :: Value -> Parser [DNonEmpty a] Source #
FromJSON a => FromJSON (DList a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (DList a) Source # parseJSONList :: Value -> Parser [DList a] Source #
FromJSON a => FromJSON (Array a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Array a) Source # parseJSONList :: Value -> Parser [Array a] Source #
(Prim a, FromJSON a) => FromJSON (PrimArray a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (PrimArray a) Source # parseJSONList :: Value -> Parser [PrimArray a] Source #
FromJSON a => FromJSON (SmallArray a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (SmallArray a) Source # parseJSONList :: Value -> Parser [SmallArray a] Source #
FromJSON a => FromJSON (Maybe a) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Maybe a) Source # parseJSONList :: Value -> Parser [Maybe a] Source #
(Eq a, Hashable a, FromJSON a) => FromJSON (HashSet a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (HashSet a) Source # parseJSONList :: Value -> Parser [HashSet a] Source #
FromJSON a => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) Source # parseJSONList :: Value -> Parser [Vector a] Source #
(Prim a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) Source # parseJSONList :: Value -> Parser [Vector a] Source #
(Storable a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) Source # parseJSONList :: Value -> Parser [Vector a] Source #
(Vector Vector a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) Source # parseJSONList :: Value -> Parser [Vector a] Source #
FromJSON a => FromJSON (NonEmpty a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (NonEmpty a) Source # parseJSONList :: Value -> Parser [NonEmpty a] Source #
FromJSON a => FromJSON (Maybe a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Maybe a) Source # parseJSONList :: Value -> Parser [Maybe a] Source #
FromJSON a => FromJSON (a) | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a) Source # parseJSONList :: Value -> Parser [(a)] Source #
FromJSON a => FromJSON [a] |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser [a] Source # parseJSONList :: Value -> Parser [[a]] Source #
(FromJSON a, FromJSON b) => FromJSON (Either a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Either a b) Source # parseJSONList :: Value -> Parser [Either a b] Source #
HasResolution a => FromJSON (Fixed a) | This instance includes a bounds check to prevent maliciously large inputs to fill up the memory of the target system. You can newtype `Scientific` and provide your own instance using `withScientific` if you want to allow larger inputs.
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Fixed a) Source # parseJSONList :: Value -> Parser [Fixed a] Source #
FromJSON (Proxy a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Proxy a) Source # parseJSONList :: Value -> Parser [Proxy a] Source #
(FromJSONKey k, Ord k, FromJSON v) => FromJSON (Map k v) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Map k v) Source # parseJSONList :: Value -> Parser [Map k v] Source #
(FromJSON a, FromJSON b) => FromJSON (Either a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Either a b) Source # parseJSONList :: Value -> Parser [Either a b] Source #
(FromJSON a, FromJSON b) => FromJSON (These a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (These a b) Source # parseJSONList :: Value -> Parser [These a b] Source #
(FromJSON a, FromJSON b) => FromJSON (Pair a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Pair a b) Source # parseJSONList :: Value -> Parser [Pair a b] Source #
(FromJSON a, FromJSON b) => FromJSON (These a b) | Since: aeson-1.5.1.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (These a b) Source # parseJSONList :: Value -> Parser [These a b] Source #
(FromJSON v, FromJSONKey k, Eq k, Hashable k) => FromJSON (HashMap k v) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (HashMap k v) Source # parseJSONList :: Value -> Parser [HashMap k v] Source #
(FromJSON a, FromJSON b) => FromJSON (a, b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b) Source # parseJSONList :: Value -> Parser [(a, b)] Source #
FromJSON a => FromJSON (Const a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Const a b) Source # parseJSONList :: Value -> Parser [Const a b] Source #
(AesonOptions t, Generic a, GFromJSON Zero (Rep a)) => FromJSON (CustomJSON t a) Source # |
Instance details Defined in Deriving.Aeson Methods parseJSON :: Value -> Parser (CustomJSON t a) Source # parseJSONList :: Value -> Parser [CustomJSON t a] Source #
FromJSON b => FromJSON (Tagged a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Tagged a b) Source # parseJSONList :: Value -> Parser [Tagged a b] Source #
(FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (These1 f g a) | Since: aeson-1.5.1.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (These1 f g a) Source # parseJSONList :: Value -> Parser [These1 f g a] Source #
(FromJSON a, FromJSON b, FromJSON c) => FromJSON (a, b, c) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c) Source # parseJSONList :: Value -> Parser [(a, b, c)] Source #
(FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Product f g a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Product f g a) Source # parseJSONList :: Value -> Parser [Product f g a] Source #
(FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Sum f g a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Sum f g a) Source # parseJSONList :: Value -> Parser [Sum f g a] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d) => FromJSON (a, b, c, d) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d) Source # parseJSONList :: Value -> Parser [(a, b, c, d)] Source #
(FromJSON1 f, FromJSON1 g, FromJSON a) => FromJSON (Compose f g a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Compose f g a) Source # parseJSONList :: Value -> Parser [Compose f g a] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e) => FromJSON (a, b, c, d, e) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f) => FromJSON (a, b, c, d, e, f) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g) => FromJSON (a, b, c, d, e, f, g) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h) => FromJSON (a, b, c, d, e, f, g, h) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i) => FromJSON (a, b, c, d, e, f, g, h, i) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j) => FromJSON (a, b, c, d, e, f, g, h, i, j) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k) => FromJSON (a, b, c, d, e, f, g, h, i, j, k) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j, k) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j, k, l) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j, k, l, m) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m, FromJSON n) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] Source #
(FromJSON a, FromJSON b, FromJSON c, FromJSON d, FromJSON e, FromJSON f, FromJSON g, FromJSON h, FromJSON i, FromJSON j, FromJSON k, FromJSON l, FromJSON m, FromJSON n, FromJSON o) => FromJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] Source #

class ToJSON a Source #

A type that can be converted to JSON.

Instances in general must specify `toJSON` and should (but don't need to) specify `toEncoding`.

An example type and instance:

    -- Allow ourselves to write Text literals.
    {-# LANGUAGE OverloadedStrings #-}

    data Coord = Coord { x :: Double, y :: Double }

    instance ToJSON Coord where
      toJSON (Coord x y) = object ["x" .= x, "y" .= y]

      toEncoding (Coord x y) = pairs ("x" .= x <> "y" .= y)

Instead of manually writing your `ToJSON` instance, there are two options to do it automatically:

- Data.Aeson.TH provides Template Haskell functions which will derive an instance at compile time. The generated instance is optimized for your type so it will probably be more efficient than the following option.
- The compiler can provide a default generic implementation for `toJSON`.

To use the second, simply add a `deriving `Generic`` clause to your datatype and declare a `ToJSON` instance. If you require nothing other than `defaultOptions`, it is sufficient to write (and this is the only alternative where the default `toJSON` implementation is sufficient):

    {-# LANGUAGE DeriveGeneric #-}

    import GHC.Generics

    data Coord = Coord { x :: Double, y :: Double } deriving Generic

    instance ToJSON Coord where
        toEncoding = genericToEncoding defaultOptions

or more conveniently using the DerivingVia extension

    deriving via Generically Coord instance ToJSON Coord

If on the other hand you wish to customize the generic decoding, you have to implement both methods:

    customOptions = defaultOptions
                    { fieldLabelModifier = map toUpper
                    }

    instance ToJSON Coord where
        toJSON     = genericToJSON customOptions
        toEncoding = genericToEncoding customOptions

Previous versions of this library only had the `toJSON` method. Adding `toEncoding` had two reasons:

1. `toEncoding` is more efficient for the common case that the output of `toJSON` is directly serialized to a `ByteString`. Further, expressing either method in terms of the other would be non-optimal.
2. The choice of defaults allows a smooth transition for existing users: Existing instances that do not define `toEncoding` still compile and have the correct semantics. This is ensured by making the default implementation of `toEncoding` use `toJSON`. This produces correct results, but since it performs an intermediate conversion to a `Value`, it will be less efficient than directly emitting an `Encoding`. (this also means that specifying nothing more than `instance ToJSON Coord` would be sufficient as a generically decoding instance, but there probably exists no good reason to not specify `toEncoding` in new instances.)

#### Instances

Instances details

ToJSON Key |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Key -> Value Source # toEncoding :: Key -> Encoding Source # toJSONList :: [Key] -> Value Source # toEncodingList :: [Key] -> Encoding Source #
ToJSON DotNetTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DotNetTime -> Value Source # toEncoding :: DotNetTime -> Encoding Source # toJSONList :: [DotNetTime] -> Value Source # toEncodingList :: [DotNetTime] -> Encoding Source #
ToJSON Value |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Value -> Value Source # toEncoding :: Value -> Encoding Source # toJSONList :: [Value] -> Value Source # toEncodingList :: [Value] -> Encoding Source #
ToJSON Number |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Number -> Value Source # toEncoding :: Number -> Encoding Source # toJSONList :: [Number] -> Value Source # toEncodingList :: [Number] -> Encoding Source #
ToJSON Version |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Version -> Value Source # toEncoding :: Version -> Encoding Source # toJSONList :: [Version] -> Value Source # toEncodingList :: [Version] -> Encoding Source #
ToJSON Void |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Void -> Value Source # toEncoding :: Void -> Encoding Source # toJSONList :: [Void] -> Value Source # toEncodingList :: [Void] -> Encoding Source #
ToJSON CTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: CTime -> Value Source # toEncoding :: CTime -> Encoding Source # toJSONList :: [CTime] -> Value Source # toEncodingList :: [CTime] -> Encoding Source #
ToJSON Int16 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Int16 -> Value Source # toEncoding :: Int16 -> Encoding Source # toJSONList :: [Int16] -> Value Source # toEncodingList :: [Int16] -> Encoding Source #
ToJSON Int32 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Int32 -> Value Source # toEncoding :: Int32 -> Encoding Source # toJSONList :: [Int32] -> Value Source # toEncodingList :: [Int32] -> Encoding Source #
ToJSON Int64 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Int64 -> Value Source # toEncoding :: Int64 -> Encoding Source # toJSONList :: [Int64] -> Value Source # toEncodingList :: [Int64] -> Encoding Source #
ToJSON Int8 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Int8 -> Value Source # toEncoding :: Int8 -> Encoding Source # toJSONList :: [Int8] -> Value Source # toEncodingList :: [Int8] -> Encoding Source #
ToJSON Word16 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Word16 -> Value Source # toEncoding :: Word16 -> Encoding Source # toJSONList :: [Word16] -> Value Source # toEncodingList :: [Word16] -> Encoding Source #
ToJSON Word32 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Word32 -> Value Source # toEncoding :: Word32 -> Encoding Source # toJSONList :: [Word32] -> Value Source # toEncodingList :: [Word32] -> Encoding Source #
ToJSON Word64 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Word64 -> Value Source # toEncoding :: Word64 -> Encoding Source # toJSONList :: [Word64] -> Value Source # toEncodingList :: [Word64] -> Encoding Source #
ToJSON Word8 |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Word8 -> Value Source # toEncoding :: Word8 -> Encoding Source # toJSONList :: [Word8] -> Value Source # toEncodingList :: [Word8] -> Encoding Source #
ToJSON IntSet |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: IntSet -> Value Source # toEncoding :: IntSet -> Encoding Source # toJSONList :: [IntSet] -> Value Source # toEncodingList :: [IntSet] -> Encoding Source #
ToJSON Ordering |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Ordering -> Value Source # toEncoding :: Ordering -> Encoding Source # toJSONList :: [Ordering] -> Value Source # toEncodingList :: [Ordering] -> Encoding Source #
ToJSON Scientific |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Scientific -> Value Source # toEncoding :: Scientific -> Encoding Source # toJSONList :: [Scientific] -> Value Source # toEncodingList :: [Scientific] -> Encoding Source #
ToJSON Text |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Text -> Value Source # toEncoding :: Text -> Encoding Source # toJSONList :: [Text] -> Value Source # toEncodingList :: [Text] -> Encoding Source #
ToJSON Text |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Text -> Value Source # toEncoding :: Text -> Encoding Source # toJSONList :: [Text] -> Value Source # toEncodingList :: [Text] -> Encoding Source #
ToJSON ShortText | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: ShortText -> Value Source # toEncoding :: ShortText -> Encoding Source # toJSONList :: [ShortText] -> Value Source # toEncodingList :: [ShortText] -> Encoding Source #
ToJSON CalendarDiffDays |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: CalendarDiffDays -> Value Source # toEncoding :: CalendarDiffDays -> Encoding Source # toJSONList :: [CalendarDiffDays] -> Value Source # toEncodingList :: [CalendarDiffDays] -> Encoding Source #
ToJSON Day |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Day -> Value Source # toEncoding :: Day -> Encoding Source # toJSONList :: [Day] -> Value Source # toEncodingList :: [Day] -> Encoding Source #
ToJSON Month |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Month -> Value Source # toEncoding :: Month -> Encoding Source # toJSONList :: [Month] -> Value Source # toEncodingList :: [Month] -> Encoding Source #
ToJSON Quarter |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Quarter -> Value Source # toEncoding :: Quarter -> Encoding Source # toJSONList :: [Quarter] -> Value Source # toEncodingList :: [Quarter] -> Encoding Source #
ToJSON QuarterOfYear |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: QuarterOfYear -> Value Source # toEncoding :: QuarterOfYear -> Encoding Source # toJSONList :: [QuarterOfYear] -> Value Source # toEncodingList :: [QuarterOfYear] -> Encoding Source #
ToJSON DayOfWeek |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DayOfWeek -> Value Source # toEncoding :: DayOfWeek -> Encoding Source # toJSONList :: [DayOfWeek] -> Value Source # toEncodingList :: [DayOfWeek] -> Encoding Source #
ToJSON DiffTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DiffTime -> Value Source # toEncoding :: DiffTime -> Encoding Source # toJSONList :: [DiffTime] -> Value Source # toEncodingList :: [DiffTime] -> Encoding Source #
ToJSON NominalDiffTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: NominalDiffTime -> Value Source # toEncoding :: NominalDiffTime -> Encoding Source # toJSONList :: [NominalDiffTime] -> Value Source # toEncodingList :: [NominalDiffTime] -> Encoding Source #
ToJSON SystemTime | Encoded as number
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: SystemTime -> Value Source # toEncoding :: SystemTime -> Encoding Source # toJSONList :: [SystemTime] -> Value Source # toEncodingList :: [SystemTime] -> Encoding Source #
ToJSON UTCTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: UTCTime -> Value Source # toEncoding :: UTCTime -> Encoding Source # toJSONList :: [UTCTime] -> Value Source # toEncodingList :: [UTCTime] -> Encoding Source #
ToJSON CalendarDiffTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: CalendarDiffTime -> Value Source # toEncoding :: CalendarDiffTime -> Encoding Source # toJSONList :: [CalendarDiffTime] -> Value Source # toEncodingList :: [CalendarDiffTime] -> Encoding Source #
ToJSON LocalTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: LocalTime -> Value Source # toEncoding :: LocalTime -> Encoding Source # toJSONList :: [LocalTime] -> Value Source # toEncodingList :: [LocalTime] -> Encoding Source #
ToJSON TimeOfDay |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: TimeOfDay -> Value Source # toEncoding :: TimeOfDay -> Encoding Source # toJSONList :: [TimeOfDay] -> Value Source # toEncodingList :: [TimeOfDay] -> Encoding Source #
ToJSON ZonedTime |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: ZonedTime -> Value Source # toEncoding :: ZonedTime -> Encoding Source # toJSONList :: [ZonedTime] -> Value Source # toEncodingList :: [ZonedTime] -> Encoding Source #
ToJSON UUID |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: UUID -> Value Source # toEncoding :: UUID -> Encoding Source # toJSONList :: [UUID] -> Value Source # toEncodingList :: [UUID] -> Encoding Source #
ToJSON Integer |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Integer -> Value Source # toEncoding :: Integer -> Encoding Source # toJSONList :: [Integer] -> Value Source # toEncodingList :: [Integer] -> Encoding Source #
ToJSON Natural |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Natural -> Value Source # toEncoding :: Natural -> Encoding Source # toJSONList :: [Natural] -> Value Source # toEncodingList :: [Natural] -> Encoding Source #
ToJSON () |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: () -> Value Source # toEncoding :: () -> Encoding Source # toJSONList :: [()] -> Value Source # toEncodingList :: [()] -> Encoding Source #
ToJSON Bool |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Bool -> Value Source # toEncoding :: Bool -> Encoding Source # toJSONList :: [Bool] -> Value Source # toEncodingList :: [Bool] -> Encoding Source #
ToJSON Char |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Char -> Value Source # toEncoding :: Char -> Encoding Source # toJSONList :: [Char] -> Value Source # toEncodingList :: [Char] -> Encoding Source #
ToJSON Double |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Double -> Value Source # toEncoding :: Double -> Encoding Source # toJSONList :: [Double] -> Value Source # toEncodingList :: [Double] -> Encoding Source #
ToJSON Float |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Float -> Value Source # toEncoding :: Float -> Encoding Source # toJSONList :: [Float] -> Value Source # toEncodingList :: [Float] -> Encoding Source #
ToJSON Int |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Int -> Value Source # toEncoding :: Int -> Encoding Source # toJSONList :: [Int] -> Value Source # toEncodingList :: [Int] -> Encoding Source #
ToJSON Word |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Word -> Value Source # toEncoding :: Word -> Encoding Source # toJSONList :: [Word] -> Value Source # toEncodingList :: [Word] -> Encoding Source #
ToJSON v => ToJSON (KeyMap v) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: KeyMap v -> Value Source # toEncoding :: KeyMap v -> Encoding Source # toJSONList :: [KeyMap v] -> Value Source # toEncodingList :: [KeyMap v] -> Encoding Source #
ToJSON a => ToJSON (Identity a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Identity a -> Value Source # toEncoding :: Identity a -> Encoding Source # toJSONList :: [Identity a] -> Value Source # toEncodingList :: [Identity a] -> Encoding Source #
ToJSON a => ToJSON (First a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: First a -> Value Source # toEncoding :: First a -> Encoding Source # toJSONList :: [First a] -> Value Source # toEncodingList :: [First a] -> Encoding Source #
ToJSON a => ToJSON (Last a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Last a -> Value Source # toEncoding :: Last a -> Encoding Source # toJSONList :: [Last a] -> Value Source # toEncodingList :: [Last a] -> Encoding Source #
ToJSON a => ToJSON (First a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: First a -> Value Source # toEncoding :: First a -> Encoding Source # toJSONList :: [First a] -> Value Source # toEncodingList :: [First a] -> Encoding Source #
ToJSON a => ToJSON (Last a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Last a -> Value Source # toEncoding :: Last a -> Encoding Source # toJSONList :: [Last a] -> Value Source # toEncodingList :: [Last a] -> Encoding Source #
ToJSON a => ToJSON (Max a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Max a -> Value Source # toEncoding :: Max a -> Encoding Source # toJSONList :: [Max a] -> Value Source # toEncodingList :: [Max a] -> Encoding Source #
ToJSON a => ToJSON (Min a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Min a -> Value Source # toEncoding :: Min a -> Encoding Source # toJSONList :: [Min a] -> Value Source # toEncodingList :: [Min a] -> Encoding Source #
ToJSON a => ToJSON (WrappedMonoid a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: WrappedMonoid a -> Value Source # toEncoding :: WrappedMonoid a -> Encoding Source # toJSONList :: [WrappedMonoid a] -> Value Source # toEncodingList :: [WrappedMonoid a] -> Encoding Source #
ToJSON a => ToJSON (Dual a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Dual a -> Value Source # toEncoding :: Dual a -> Encoding Source # toJSONList :: [Dual a] -> Value Source # toEncodingList :: [Dual a] -> Encoding Source #
(Generic a, GToJSON' Value Zero (Rep a), GToJSON' Encoding Zero (Rep a)) => ToJSON (Generically a) | Since: aeson-2.1.0.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Generically a -> Value Source # toEncoding :: Generically a -> Encoding Source # toJSONList :: [Generically a] -> Value Source # toEncodingList :: [Generically a] -> Encoding Source #
(ToJSON a, Integral a) => ToJSON (Ratio a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Ratio a -> Value Source # toEncoding :: Ratio a -> Encoding Source # toJSONList :: [Ratio a] -> Value Source # toEncodingList :: [Ratio a] -> Encoding Source #
ToJSON a => ToJSON (IntMap a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: IntMap a -> Value Source # toEncoding :: IntMap a -> Encoding Source # toJSONList :: [IntMap a] -> Value Source # toEncodingList :: [IntMap a] -> Encoding Source #
ToJSON a => ToJSON (Seq a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Seq a -> Value Source # toEncoding :: Seq a -> Encoding Source # toJSONList :: [Seq a] -> Value Source # toEncodingList :: [Seq a] -> Encoding Source #
ToJSON a => ToJSON (Set a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Set a -> Value Source # toEncoding :: Set a -> Encoding Source # toJSONList :: [Set a] -> Value Source # toEncodingList :: [Set a] -> Encoding Source #
ToJSON v => ToJSON (Tree v) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Tree v -> Value Source # toEncoding :: Tree v -> Encoding Source # toJSONList :: [Tree v] -> Value Source # toEncodingList :: [Tree v] -> Encoding Source #
ToJSON1 f => ToJSON (Fix f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Fix f -> Value Source # toEncoding :: Fix f -> Encoding Source # toJSONList :: [Fix f] -> Value Source # toEncodingList :: [Fix f] -> Encoding Source #
(ToJSON1 f, Functor f) => ToJSON (Mu f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Mu f -> Value Source # toEncoding :: Mu f -> Encoding Source # toJSONList :: [Mu f] -> Value Source # toEncodingList :: [Mu f] -> Encoding Source #
(ToJSON1 f, Functor f) => ToJSON (Nu f) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Nu f -> Value Source # toEncoding :: Nu f -> Encoding Source # toJSONList :: [Nu f] -> Value Source # toEncodingList :: [Nu f] -> Encoding Source #
ToJSON a => ToJSON (DNonEmpty a) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DNonEmpty a -> Value Source # toEncoding :: DNonEmpty a -> Encoding Source # toJSONList :: [DNonEmpty a] -> Value Source # toEncodingList :: [DNonEmpty a] -> Encoding Source #
ToJSON a => ToJSON (DList a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: DList a -> Value Source # toEncoding :: DList a -> Encoding Source # toJSONList :: [DList a] -> Value Source # toEncodingList :: [DList a] -> Encoding Source #
ToJSON a => ToJSON (Array a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Array a -> Value Source # toEncoding :: Array a -> Encoding Source # toJSONList :: [Array a] -> Value Source # toEncodingList :: [Array a] -> Encoding Source #
(Prim a, ToJSON a) => ToJSON (PrimArray a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: PrimArray a -> Value Source # toEncoding :: PrimArray a -> Encoding Source # toJSONList :: [PrimArray a] -> Value Source # toEncodingList :: [PrimArray a] -> Encoding Source #
ToJSON a => ToJSON (SmallArray a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: SmallArray a -> Value Source # toEncoding :: SmallArray a -> Encoding Source # toJSONList :: [SmallArray a] -> Value Source # toEncodingList :: [SmallArray a] -> Encoding Source #
ToJSON a => ToJSON (Maybe a) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Maybe a -> Value Source # toEncoding :: Maybe a -> Encoding Source # toJSONList :: [Maybe a] -> Value Source # toEncodingList :: [Maybe a] -> Encoding Source #
ToJSON a => ToJSON (HashSet a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: HashSet a -> Value Source # toEncoding :: HashSet a -> Encoding Source # toJSONList :: [HashSet a] -> Value Source # toEncodingList :: [HashSet a] -> Encoding Source #
ToJSON a => ToJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Vector a -> Value Source # toEncoding :: Vector a -> Encoding Source # toJSONList :: [Vector a] -> Value Source # toEncodingList :: [Vector a] -> Encoding Source #
(Prim a, ToJSON a) => ToJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Vector a -> Value Source # toEncoding :: Vector a -> Encoding Source # toJSONList :: [Vector a] -> Value Source # toEncodingList :: [Vector a] -> Encoding Source #
(Storable a, ToJSON a) => ToJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Vector a -> Value Source # toEncoding :: Vector a -> Encoding Source # toJSONList :: [Vector a] -> Value Source # toEncodingList :: [Vector a] -> Encoding Source #
(Vector Vector a, ToJSON a) => ToJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Vector a -> Value Source # toEncoding :: Vector a -> Encoding Source # toJSONList :: [Vector a] -> Value Source # toEncodingList :: [Vector a] -> Encoding Source #
ToJSON a => ToJSON (NonEmpty a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: NonEmpty a -> Value Source # toEncoding :: NonEmpty a -> Encoding Source # toJSONList :: [NonEmpty a] -> Value Source # toEncodingList :: [NonEmpty a] -> Encoding Source #
ToJSON a => ToJSON (Maybe a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Maybe a -> Value Source # toEncoding :: Maybe a -> Encoding Source # toJSONList :: [Maybe a] -> Value Source # toEncodingList :: [Maybe a] -> Encoding Source #
ToJSON a => ToJSON (a) | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a) -> Value Source # toEncoding :: (a) -> Encoding Source # toJSONList :: [(a)] -> Value Source # toEncodingList :: [(a)] -> Encoding Source #
ToJSON a => ToJSON [a] |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: [a] -> Value Source # toEncoding :: [a] -> Encoding Source # toJSONList :: [[a]] -> Value Source # toEncodingList :: [[a]] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (Either a b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Either a b -> Value Source # toEncoding :: Either a b -> Encoding Source # toJSONList :: [Either a b] -> Value Source # toEncodingList :: [Either a b] -> Encoding Source #
HasResolution a => ToJSON (Fixed a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Fixed a -> Value Source # toEncoding :: Fixed a -> Encoding Source # toJSONList :: [Fixed a] -> Value Source # toEncodingList :: [Fixed a] -> Encoding Source #
ToJSON (Proxy a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Proxy a -> Value Source # toEncoding :: Proxy a -> Encoding Source # toJSONList :: [Proxy a] -> Value Source # toEncodingList :: [Proxy a] -> Encoding Source #
(ToJSON v, ToJSONKey k) => ToJSON (Map k v) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Map k v -> Value Source # toEncoding :: Map k v -> Encoding Source # toJSONList :: [Map k v] -> Value Source # toEncodingList :: [Map k v] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (Either a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Either a b -> Value Source # toEncoding :: Either a b -> Encoding Source # toJSONList :: [Either a b] -> Value Source # toEncodingList :: [Either a b] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (These a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: These a b -> Value Source # toEncoding :: These a b -> Encoding Source # toJSONList :: [These a b] -> Value Source # toEncodingList :: [These a b] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (Pair a b) | Since: aeson-1.5.3.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Pair a b -> Value Source # toEncoding :: Pair a b -> Encoding Source # toJSONList :: [Pair a b] -> Value Source # toEncodingList :: [Pair a b] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (These a b) | Since: aeson-1.5.1.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: These a b -> Value Source # toEncoding :: These a b -> Encoding Source # toJSONList :: [These a b] -> Value Source # toEncodingList :: [These a b] -> Encoding Source #
(ToJSON v, ToJSONKey k) => ToJSON (HashMap k v) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: HashMap k v -> Value Source # toEncoding :: HashMap k v -> Encoding Source # toJSONList :: [HashMap k v] -> Value Source # toEncodingList :: [HashMap k v] -> Encoding Source #
(ToJSON a, ToJSON b) => ToJSON (a, b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b) -> Value Source # toEncoding :: (a, b) -> Encoding Source # toJSONList :: [(a, b)] -> Value Source # toEncodingList :: [(a, b)] -> Encoding Source #
ToJSON a => ToJSON (Const a b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Const a b -> Value Source # toEncoding :: Const a b -> Encoding Source # toJSONList :: [Const a b] -> Value Source # toEncodingList :: [Const a b] -> Encoding Source #
(AesonOptions t, Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (CustomJSON t a) Source # |
Instance details Defined in Deriving.Aeson Methods toJSON :: CustomJSON t a -> Value Source # toEncoding :: CustomJSON t a -> Encoding Source # toJSONList :: [CustomJSON t a] -> Value Source # toEncodingList :: [CustomJSON t a] -> Encoding Source #
ToJSON b => ToJSON (Tagged a b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Tagged a b -> Value Source # toEncoding :: Tagged a b -> Encoding Source # toJSONList :: [Tagged a b] -> Value Source # toEncodingList :: [Tagged a b] -> Encoding Source #
(ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (These1 f g a) | Since: aeson-1.5.1.0
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: These1 f g a -> Value Source # toEncoding :: These1 f g a -> Encoding Source # toJSONList :: [These1 f g a] -> Value Source # toEncodingList :: [These1 f g a] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c) => ToJSON (a, b, c) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c) -> Value Source # toEncoding :: (a, b, c) -> Encoding Source # toJSONList :: [(a, b, c)] -> Value Source # toEncodingList :: [(a, b, c)] -> Encoding Source #
(ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Product f g a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Product f g a -> Value Source # toEncoding :: Product f g a -> Encoding Source # toJSONList :: [Product f g a] -> Value Source # toEncodingList :: [Product f g a] -> Encoding Source #
(ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Sum f g a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Sum f g a -> Value Source # toEncoding :: Sum f g a -> Encoding Source # toJSONList :: [Sum f g a] -> Value Source # toEncodingList :: [Sum f g a] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d) => ToJSON (a, b, c, d) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d) -> Value Source # toEncoding :: (a, b, c, d) -> Encoding Source # toJSONList :: [(a, b, c, d)] -> Value Source # toEncodingList :: [(a, b, c, d)] -> Encoding Source #
(ToJSON1 f, ToJSON1 g, ToJSON a) => ToJSON (Compose f g a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Compose f g a -> Value Source # toEncoding :: Compose f g a -> Encoding Source # toJSONList :: [Compose f g a] -> Value Source # toEncodingList :: [Compose f g a] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e) => ToJSON (a, b, c, d, e) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e) -> Value Source # toEncoding :: (a, b, c, d, e) -> Encoding Source # toJSONList :: [(a, b, c, d, e)] -> Value Source # toEncodingList :: [(a, b, c, d, e)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f) => ToJSON (a, b, c, d, e, f) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f) -> Value Source # toEncoding :: (a, b, c, d, e, f) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g) => ToJSON (a, b, c, d, e, f, g) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g) -> Value Source # toEncoding :: (a, b, c, d, e, f, g) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h) => ToJSON (a, b, c, d, e, f, g, h) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i) => ToJSON (a, b, c, d, e, f, g, h, i) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j) => ToJSON (a, b, c, d, e, f, g, h, i, j) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k) => ToJSON (a, b, c, d, e, f, g, h, i, j, k) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m, ToJSON n) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] -> Encoding Source #
(ToJSON a, ToJSON b, ToJSON c, ToJSON d, ToJSON e, ToJSON f, ToJSON g, ToJSON h, ToJSON i, ToJSON j, ToJSON k, ToJSON l, ToJSON m, ToJSON n, ToJSON o) => ToJSON (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Value Source # toEncoding :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Encoding Source # toJSONList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] -> Value Source # toEncodingList :: [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] -> Encoding Source #

class Generic a Source #

Representable types of kind `*`. This class is derivable in GHC with the `DeriveGeneric` flag on.

A `Generic` instance must satisfy the following laws:

    from . to ≡ id
    to . from ≡ id

Minimal complete definition

from, to

#### Instances

Instances details

Generic Value |
Instance details Defined in Data.Aeson.Types.Internal Associated Types type Rep Value :: Type -> Type Source # Methods from :: Value -> Rep Value x Source # to :: Rep Value x -> Value Source #
Generic Fingerprint |
Instance details Defined in GHC.Generics Associated Types type Rep Fingerprint :: Type -> Type Source # Methods from :: Fingerprint -> Rep Fingerprint x Source # to :: Rep Fingerprint x -> Fingerprint Source #
Generic Associativity |
Instance details Defined in GHC.Generics Associated Types type Rep Associativity :: Type -> Type Source # Methods from :: Associativity -> Rep Associativity x Source # to :: Rep Associativity x -> Associativity Source #
Generic DecidedStrictness |
Instance details Defined in GHC.Generics Associated Types type Rep DecidedStrictness :: Type -> Type Source # Methods from :: DecidedStrictness -> Rep DecidedStrictness x Source # to :: Rep DecidedStrictness x -> DecidedStrictness Source #
Generic Fixity |
Instance details Defined in GHC.Generics Associated Types type Rep Fixity :: Type -> Type Source # Methods from :: Fixity -> Rep Fixity x Source # to :: Rep Fixity x -> Fixity Source #
Generic SourceStrictness |
Instance details Defined in GHC.Generics Associated Types type Rep SourceStrictness :: Type -> Type Source # Methods from :: SourceStrictness -> Rep SourceStrictness x Source # to :: Rep SourceStrictness x -> SourceStrictness Source #
Generic SourceUnpackedness |
Instance details Defined in GHC.Generics Associated Types type Rep SourceUnpackedness :: Type -> Type Source # Methods from :: SourceUnpackedness -> Rep SourceUnpackedness x Source # to :: Rep SourceUnpackedness x -> SourceUnpackedness Source #
Generic ExitCode |
Instance details Defined in GHC.IO.Exception Associated Types type Rep ExitCode :: Type -> Type Source # Methods from :: ExitCode -> Rep ExitCode x Source # to :: Rep ExitCode x -> ExitCode Source #
Generic SrcLoc |
Instance details Defined in GHC.Generics Associated Types type Rep SrcLoc :: Type -> Type Source # Methods from :: SrcLoc -> Rep SrcLoc x Source # to :: Rep SrcLoc x -> SrcLoc Source #
Generic GeneralCategory |
Instance details Defined in GHC.Generics Associated Types type Rep GeneralCategory :: Type -> Type Source # Methods from :: GeneralCategory -> Rep GeneralCategory x Source # to :: Rep GeneralCategory x -> GeneralCategory Source #
Generic Ordering |
Instance details Defined in GHC.Generics Associated Types type Rep Ordering :: Type -> Type Source # Methods from :: Ordering -> Rep Ordering x Source # to :: Rep Ordering x -> Ordering Source #
Generic () |
Instance details Defined in GHC.Generics Associated Types type Rep () :: Type -> Type Source # Methods from :: () -> Rep () x Source # to :: Rep () x -> () Source #
Generic Bool |
Instance details Defined in GHC.Generics Associated Types type Rep Bool :: Type -> Type Source # Methods from :: Bool -> Rep Bool x Source # to :: Rep Bool x -> Bool Source #
Generic (Down a) |
Instance details Defined in GHC.Generics Associated Types type Rep (Down a) :: Type -> Type Source # Methods from :: Down a -> Rep (Down a) x Source # to :: Rep (Down a) x -> Down a Source #
Generic (Par1 p) |
Instance details Defined in GHC.Generics Associated Types type Rep (Par1 p) :: Type -> Type Source # Methods from :: Par1 p -> Rep (Par1 p) x Source # to :: Rep (Par1 p) x -> Par1 p Source #
Generic (NonEmpty a) |
Instance details Defined in GHC.Generics Associated Types type Rep (NonEmpty a) :: Type -> Type Source # Methods from :: NonEmpty a -> Rep (NonEmpty a) x Source # to :: Rep (NonEmpty a) x -> NonEmpty a Source #
Generic (Maybe a) |
Instance details Defined in GHC.Generics Associated Types type Rep (Maybe a) :: Type -> Type Source # Methods from :: Maybe a -> Rep (Maybe a) x Source # to :: Rep (Maybe a) x -> Maybe a Source #
Generic (a) |
Instance details Defined in GHC.Generics Associated Types type Rep (a) :: Type -> Type Source # Methods from :: (a) -> Rep (a) x Source # to :: Rep (a) x -> (a) Source #
Generic [a] |
Instance details Defined in GHC.Generics Associated Types type Rep [a] :: Type -> Type Source # Methods from :: [a] -> Rep [a] x Source # to :: Rep [a] x -> [a] Source #
Generic (Either a b) |
Instance details Defined in GHC.Generics Associated Types type Rep (Either a b) :: Type -> Type Source # Methods from :: Either a b -> Rep (Either a b) x Source # to :: Rep (Either a b) x -> Either a b Source #
Generic (Proxy t) |
Instance details Defined in GHC.Generics Associated Types type Rep (Proxy t) :: Type -> Type Source # Methods from :: Proxy t -> Rep (Proxy t) x Source # to :: Rep (Proxy t) x -> Proxy t Source #
Generic (U1 p) |
Instance details Defined in GHC.Generics Associated Types type Rep (U1 p) :: Type -> Type Source # Methods from :: U1 p -> Rep (U1 p) x Source # to :: Rep (U1 p) x -> U1 p Source #
Generic (V1 p) |
Instance details Defined in GHC.Generics Associated Types type Rep (V1 p) :: Type -> Type Source # Methods from :: V1 p -> Rep (V1 p) x Source # to :: Rep (V1 p) x -> V1 p Source #
Generic (a, b) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b) :: Type -> Type Source # Methods from :: (a, b) -> Rep (a, b) x Source # to :: Rep (a, b) x -> (a, b) Source #
Generic (Rec1 f p) |
Instance details Defined in GHC.Generics Associated Types type Rep (Rec1 f p) :: Type -> Type Source # Methods from :: Rec1 f p -> Rep (Rec1 f p) x Source # to :: Rep (Rec1 f p) x -> Rec1 f p Source #
Generic (URec (Ptr ()) p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec (Ptr ()) p) :: Type -> Type Source # Methods from :: URec (Ptr ()) p -> Rep (URec (Ptr ()) p) x Source # to :: Rep (URec (Ptr ()) p) x -> URec (Ptr ()) p Source #
Generic (URec Char p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Char p) :: Type -> Type Source # Methods from :: URec Char p -> Rep (URec Char p) x Source # to :: Rep (URec Char p) x -> URec Char p Source #
Generic (URec Double p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Double p) :: Type -> Type Source # Methods from :: URec Double p -> Rep (URec Double p) x Source # to :: Rep (URec Double p) x -> URec Double p Source #
Generic (URec Float p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Float p) :: Type -> Type Source # Methods from :: URec Float p -> Rep (URec Float p) x Source # to :: Rep (URec Float p) x -> URec Float p Source #
Generic (URec Int p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Int p) :: Type -> Type Source # Methods from :: URec Int p -> Rep (URec Int p) x Source # to :: Rep (URec Int p) x -> URec Int p Source #
Generic (URec Word p) |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Word p) :: Type -> Type Source # Methods from :: URec Word p -> Rep (URec Word p) x Source # to :: Rep (URec Word p) x -> URec Word p Source #
Generic (a, b, c) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c) :: Type -> Type Source # Methods from :: (a, b, c) -> Rep (a, b, c) x Source # to :: Rep (a, b, c) x -> (a, b, c) Source #
Generic ((f :*: g) p) |
Instance details Defined in GHC.Generics Associated Types type Rep ((f :*: g) p) :: Type -> Type Source # Methods from :: (f :*: g) p -> Rep ((f :*: g) p) x Source # to :: Rep ((f :*: g) p) x -> (f :*: g) p Source #
Generic ((f :+: g) p) |
Instance details Defined in GHC.Generics Associated Types type Rep ((f :+: g) p) :: Type -> Type Source # Methods from :: (f :+: g) p -> Rep ((f :+: g) p) x Source # to :: Rep ((f :+: g) p) x -> (f :+: g) p Source #
Generic (K1 i c p) |
Instance details Defined in GHC.Generics Associated Types type Rep (K1 i c p) :: Type -> Type Source # Methods from :: K1 i c p -> Rep (K1 i c p) x Source # to :: Rep (K1 i c p) x -> K1 i c p Source #
Generic (a, b, c, d) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d) :: Type -> Type Source # Methods from :: (a, b, c, d) -> Rep (a, b, c, d) x Source # to :: Rep (a, b, c, d) x -> (a, b, c, d) Source #
Generic ((f :.: g) p) |
Instance details Defined in GHC.Generics Associated Types type Rep ((f :.: g) p) :: Type -> Type Source # Methods from :: (f :.: g) p -> Rep ((f :.: g) p) x Source # to :: Rep ((f :.: g) p) x -> (f :.: g) p Source #
Generic (M1 i c f p) |
Instance details Defined in GHC.Generics Associated Types type Rep (M1 i c f p) :: Type -> Type Source # Methods from :: M1 i c f p -> Rep (M1 i c f p) x Source # to :: Rep (M1 i c f p) x -> M1 i c f p Source #
Generic (a, b, c, d, e) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e) :: Type -> Type Source # Methods from :: (a, b, c, d, e) -> Rep (a, b, c, d, e) x Source # to :: Rep (a, b, c, d, e) x -> (a, b, c, d, e) Source #
Generic (a, b, c, d, e, f) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f) -> Rep (a, b, c, d, e, f) x Source # to :: Rep (a, b, c, d, e, f) x -> (a, b, c, d, e, f) Source #
Generic (a, b, c, d, e, f, g) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g) -> Rep (a, b, c, d, e, f, g) x Source # to :: Rep (a, b, c, d, e, f, g) x -> (a, b, c, d, e, f, g) Source #
Generic (a, b, c, d, e, f, g, h) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h) -> Rep (a, b, c, d, e, f, g, h) x Source # to :: Rep (a, b, c, d, e, f, g, h) x -> (a, b, c, d, e, f, g, h) Source #
Generic (a, b, c, d, e, f, g, h, i) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i) -> Rep (a, b, c, d, e, f, g, h, i) x Source # to :: Rep (a, b, c, d, e, f, g, h, i) x -> (a, b, c, d, e, f, g, h, i) Source #
Generic (a, b, c, d, e, f, g, h, i, j) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j) -> Rep (a, b, c, d, e, f, g, h, i, j) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j) x -> (a, b, c, d, e, f, g, h, i, j) Source #
Generic (a, b, c, d, e, f, g, h, i, j, k) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j, k) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j, k) -> Rep (a, b, c, d, e, f, g, h, i, j, k) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j, k) x -> (a, b, c, d, e, f, g, h, i, j, k) Source #
Generic (a, b, c, d, e, f, g, h, i, j, k, l) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j, k, l) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j, k, l) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l) x -> (a, b, c, d, e, f, g, h, i, j, k, l) Source #
Generic (a, b, c, d, e, f, g, h, i, j, k, l, m) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m) Source #
Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) Source #
Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) |
Instance details Defined in GHC.Generics Associated Types type Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) :: Type -> Type Source # Methods from :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) x Source # to :: Rep (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) x -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) Source #