Data.Yaml

yaml-0.11.11.2: Support for parsing and rendering YAML documents.

Safe Haskell | None
Language | Haskell2010

Data.Yaml

Contents

- Encoding
- Decoding
  - Decoding multiple documents
  - More control over decoding
- Types
- Constructors and accessors
  - With helpers (since 0.8.23)
- Parsing
- Classes
- Custom encoding
- Deprecated

Description

Provides a high-level interface for processing YAML files.

This module reuses most of the infrastructure from the `aeson` package. This means that you can use all of the existing tools for JSON processing for processing YAML files. As a result, much of the documentation below mentions JSON; do not let that confuse you, it's intentional.

For the most part, YAML content translates directly into JSON, and therefore there is very little data loss. If you need to deal with YAML more directly (e.g., directly deal with aliases), you should use the Text.Libyaml module instead.

For documentation on the `aeson` types, functions, classes, and operators, please see the `Data.Aeson` module of the `aeson` package.

Look in the examples directory of the source repository for some initial pointers on how to use this library.

Synopsis

- encode :: ToJSON a => a -> ByteString
- encodeWith :: ToJSON a => EncodeOptions -> a -> ByteString
- encodeFile :: ToJSON a => FilePath -> a -> IO ()
- encodeFileWith :: ToJSON a => EncodeOptions -> FilePath -> a -> IO ()
- decodeEither' :: FromJSON a => ByteString -> Either ParseException a
- decodeFileEither :: FromJSON a => FilePath -> IO (Either ParseException a)
- decodeFileWithWarnings :: FromJSON a => FilePath -> IO (Either ParseException ([Warning], a))
- decodeThrow :: (MonadThrow m, FromJSON a) => ByteString -> m a
- decodeFileThrow :: (MonadIO m, FromJSON a) => FilePath -> m a
- decodeAllEither' :: FromJSON a => ByteString -> Either ParseException [a]
- decodeAllFileEither :: FromJSON a => FilePath -> IO (Either ParseException [a])
- decodeAllFileWithWarnings :: FromJSON a => FilePath -> IO (Either ParseException ([Warning], [a]))
- decodeAllThrow :: (MonadThrow m, FromJSON a) => ByteString -> m [a]
- decodeAllFileThrow :: (MonadIO m, FromJSON a) => FilePath -> m [a]
- decodeHelper :: FromJSON a => ConduitM () Event Parse () -> IO (Either ParseException ([Warning], Either String a))
- data Value
  - = Object !Object
  - | Array !Array
  - | String !Text
  - | Number !Scientific
  - | Bool !Bool
  - | Null
- data Parser a
- type Object = KeyMap Value
- type Array = Vector Value
- data ParseException
  - = NonScalarKey
  - | UnknownAlias {
    - _anchorName :: AnchorName
    }
  - | UnexpectedEvent {
    - _received :: Maybe Event
    - _expected :: Maybe Event
    }
  - | InvalidYaml (Maybe YamlException)
  - | MultipleDocuments
  - | AesonException String
  - | OtherParseException SomeException
  - | NonStringKey JSONPath
  - | NonStringKeyAlias AnchorName Value
  - | CyclicIncludes
  - | LoadSettingsException FilePath ParseException
- prettyPrintParseException :: ParseException -> String
- data YamlException
  - = YamlException String
  - | YamlParseException {
    - yamlProblem :: String
    - yamlContext :: String
    - yamlProblemMark :: YamlMark
    }
- data YamlMark = YamlMark {
  - yamlIndex :: Int
  - yamlLine :: Int
  - yamlColumn :: Int
  }
- object :: [Pair] -> Value
- array :: [Value] -> Value
- (.=) :: (KeyValue e kv, ToJSON v) => Key -> v -> kv
- (.:) :: FromJSON a => Object -> Key -> Parser a
- (.:?) :: FromJSON a => Object -> Key -> Parser (Maybe a)
- (.!=) :: Parser (Maybe a) -> a -> Parser a
- withObject :: String -> (Object -> Parser a) -> Value -> Parser a
- withText :: String -> (Text -> Parser a) -> Value -> Parser a
- withArray :: String -> (Array -> Parser a) -> Value -> Parser a
- withScientific :: String -> (Scientific -> Parser a) -> Value -> Parser a
- withBool :: String -> (Bool -> Parser a) -> Value -> Parser a
- parseMonad :: MonadFail m => (a -> Parser b) -> a -> m b
- parseEither :: (a -> Parser b) -> a -> Either String b
- parseMaybe :: (a -> Parser b) -> a -> Maybe b
- class ToJSON a where
  - toJSON :: a -> Value
  - toEncoding :: a -> Encoding
  - toJSONList :: [a] -> Value
  - toEncodingList :: [a] -> Encoding
  - omitField :: a -> Bool
- class FromJSON a where
  - parseJSON :: Value -> Parser a
  - parseJSONList :: Value -> Parser [a]
  - omittedField :: Maybe a
- isSpecialString :: Text -> Bool
- data EncodeOptions
- defaultEncodeOptions :: EncodeOptions
- defaultStringStyle :: StringStyle
- setStringStyle :: (Text -> (Tag, Style)) -> EncodeOptions -> EncodeOptions
- setFormat :: FormatOptions -> EncodeOptions -> EncodeOptions
- data FormatOptions
- defaultFormatOptions :: FormatOptions
- setWidth :: Maybe Int -> FormatOptions -> FormatOptions
- decode :: FromJSON a => ByteString -> Maybe a
- decodeFile :: FromJSON a => FilePath -> IO (Maybe a)
- decodeEither :: FromJSON a => ByteString -> Either String a

# Encoding

encode :: ToJSON a => a -> ByteString #

Encode a value into its YAML representation.

encodeWith :: ToJSON a => EncodeOptions -> a -> ByteString #

Encode a value into its YAML representation with custom styling.

Since: 0.10.2.0

encodeFile :: ToJSON a => FilePath -> a -> IO () #

Encode a value into its YAML representation and save to the given file.

encodeFileWith :: ToJSON a => EncodeOptions -> FilePath -> a -> IO () #

Encode a value into its YAML representation with custom styling and save to the given file.

Since: 0.10.2.0

# Decoding

decodeEither' :: FromJSON a => ByteString -> Either ParseException a #

More helpful version of `decodeEither` which returns the `YamlException`.

Since: 0.8.3

decodeFileEither :: FromJSON a => FilePath -> IO (Either ParseException a) #

A version of `decodeFile` which should not throw runtime exceptions.

Since: 0.8.4

decodeFileWithWarnings :: FromJSON a => FilePath -> IO (Either ParseException ([Warning], a)) #

A version of `decodeFileEither` that returns warnings along with the parse result.

Since: 0.10.0

decodeThrow :: (MonadThrow m, FromJSON a) => ByteString -> m a #

A version of `decodeEither'` lifted to MonadThrow

Since: 0.8.31

decodeFileThrow :: (MonadIO m, FromJSON a) => FilePath -> m a #

A version of `decodeFileEither` lifted to MonadIO

Since: 0.8.31

## Decoding multiple documents

For situations where we need to be able to parse multiple documents separated by `---` in a YAML stream, these functions decode a list of values rather than a single value.

decodeAllEither' :: FromJSON a => ByteString -> Either ParseException [a] #

Like `decodeEither'`, but decode multiple documents.

Since: 0.11.5.0

decodeAllFileEither :: FromJSON a => FilePath -> IO (Either ParseException [a]) #

Like `decodeFileEither`, but decode multiple documents.

Since: 0.11.5.0

decodeAllFileWithWarnings :: FromJSON a => FilePath -> IO (Either ParseException ([Warning], [a])) #

Like `decodeFileWithWarnings`, but decode multiple documents.

Since: 0.11.5.0

decodeAllThrow :: (MonadThrow m, FromJSON a) => ByteString -> m [a] #

Like `decodeThrow`, but decode multiple documents.

Since: 0.11.5.0

decodeAllFileThrow :: (MonadIO m, FromJSON a) => FilePath -> m [a] #

Like `decodeFileThrow`, but decode multiple documents.

Since: 0.11.5.0

## More control over decoding

decodeHelper :: FromJSON a => ConduitM () Event Parse () -> IO (Either ParseException ([Warning], Either String a)) #

# Types

data Value #

A JSON value represented as a Haskell value.

Constructors

Object !Object |
Array !Array |
String !Text |
Number !Scientific |
Bool !Bool |
Null |

#### Instances

Instances details

Arbitrary Value | Since: aeson-2.0.3.0
Instance details Defined in Data.Aeson.Types.Internal Methods arbitrary :: Gen Value # shrink :: Value -> [Value] #
CoArbitrary Value | Since: aeson-2.0.3.0
Instance details Defined in Data.Aeson.Types.Internal Methods coarbitrary :: Value -> Gen b -> Gen b #
Function Value | Since: aeson-2.0.3.0
Instance details Defined in Data.Aeson.Types.Internal Methods function :: (Value -> b) -> Value :-> b #
FromJSON Value |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Value # parseJSONList :: Value -> Parser [Value] # omittedField :: Maybe Value #
ToJSON Value |
Instance details Defined in Data.Aeson.Types.ToJSON Methods toJSON :: Value -> Value # toEncoding :: Value -> Encoding # toJSONList :: [Value] -> Value # toEncodingList :: [Value] -> Encoding # omitField :: Value -> Bool #
NFData Value |
Instance details Defined in Data.Aeson.Types.Internal Methods rnf :: Value -> () #
Data Value |
Instance details Defined in Data.Aeson.Types.Internal Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Value -> c Value # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Value # toConstr :: Value -> Constr # dataTypeOf :: Value -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Value) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Value) # gmapT :: (forall b. Data b => b -> b) -> Value -> Value # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Value -> r # gmapQ :: (forall d. Data d => d -> u) -> Value -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Value -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Value -> m Value # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Value -> m Value #
IsString Value |
Instance details Defined in Data.Aeson.Types.Internal Methods fromString :: String -> Value #
Generic Value |
Instance details Defined in Data.Aeson.Types.Internal Associated Types
type Rep Value |
Instance details Defined in Data.Aeson.Types.Internal type Rep Value = D1 ('MetaData "Value" "Data.Aeson.Types.Internal" "aeson-2.2.3.0-7XnCskwqBum1iz93aA1K0B" 'False) ((C1 ('MetaCons "Object" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Object)) :+: (C1 ('MetaCons "Array" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Array)) :+: C1 ('MetaCons "String" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)))) :+: (C1 ('MetaCons "Number" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Scientific)) :+: (C1 ('MetaCons "Bool" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)) :+: C1 ('MetaCons "Null" 'PrefixI 'False) (U1 :: Type -> Type))))
Methods from :: Value -> Rep Value x # to :: Rep Value x -> Value #
Read Value |
Instance details Defined in Data.Aeson.Types.Internal Methods readsPrec :: Int -> ReadS Value # readList :: ReadS [Value] # readPrec :: ReadPrec Value # readListPrec :: ReadPrec [Value] #
Show Value | Since version 1.5.6.0 version object values are printed in lexicographic key order
    >>> toJSON $ H.fromList [("a", True), ("z", False)]
    Object (fromList [("a",Bool True),("z",Bool False)])
    >>> toJSON $ H.fromList [("z", False), ("a", True)]
    Object (fromList [("a",Bool True),("z",Bool False)])
Instance details Defined in Data.Aeson.Types.Internal Methods showsPrec :: Int -> Value -> ShowS # show :: Value -> String # showList :: [Value] -> ShowS #
Eq Value |
Instance details Defined in Data.Aeson.Types.Internal Methods (==) :: Value -> Value -> Bool # (/=) :: Value -> Value -> Bool #
Ord Value | The ordering is total, consistent with `Eq` instance. However, nothing else about the ordering is specified, and it may change from environment to environment and version to version of either this package or its dependencies (`hashable` and 'unordered-containers'). Since: aeson-1.5.2.0
Instance details Defined in Data.Aeson.Types.Internal Methods compare :: Value -> Value -> Ordering # (<) :: Value -> Value -> Bool # (<=) :: Value -> Value -> Bool # (>) :: Value -> Value -> Bool # (>=) :: Value -> Value -> Bool # max :: Value -> Value -> Value # min :: Value -> Value -> Value #
Hashable Value |
Instance details Defined in Data.Aeson.Types.Internal Methods hashWithSalt :: Int -> Value -> Int # hash :: Value -> Int #
KeyValue Encoding Series |
Instance details Defined in Data.Aeson.Types.ToJSON Methods (.=) :: ToJSON v => Key -> v -> Series # explicitToField :: (v -> Encoding) -> Key -> v -> Series #
KeyValueOmit Encoding Series |
Instance details Defined in Data.Aeson.Types.ToJSON Methods (.?=) :: ToJSON v => Key -> v -> Series # explicitToFieldOmit :: (v -> Bool) -> (v -> Encoding) -> Key -> v -> Series #
Lift Value | Since: aeson-0.11.0.0
Instance details Defined in Data.Aeson.Types.Internal Methods lift :: Quote m => Value -> m Exp # liftTyped :: forall (m :: Type -> Type). Quote m => Value -> Code m Value #
(GToJSON' Encoding arity a, ConsToJSON Encoding arity a, Constructor c) => SumToJSON' TwoElemArray Encoding arity (C1 c a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods sumToJSON' :: Options -> ToArgs Encoding arity a0 -> C1 c a a0 -> Tagged TwoElemArray Encoding
(GToJSON' Value arity a, ConsToJSON Value arity a, Constructor c) => SumToJSON' TwoElemArray Value arity (C1 c a) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods sumToJSON' :: Options -> ToArgs Value arity a0 -> C1 c a a0 -> Tagged TwoElemArray Value
GToJSON' Encoding arity (U1 :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding arity a -> U1 a -> Encoding
GToJSON' Encoding arity (V1 :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding arity a -> V1 a -> Encoding
GToJSON' Value arity (U1 :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value arity a -> U1 a -> Value
GToJSON' Value arity (V1 :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value arity a -> V1 a -> Value
ToJSON1 f => GToJSON' Encoding One (Rec1 f) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding One a -> Rec1 f a -> Encoding
ToJSON1 f => GToJSON' Value One (Rec1 f) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value One a -> Rec1 f a -> Value
(EncodeProduct arity a, EncodeProduct arity b) => GToJSON' Encoding arity (a :*: b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding arity a0 -> (a :*: b) a0 -> Encoding
ToJSON a => GToJSON' Encoding arity (K1 i a :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding arity a0 -> K1 i a a0 -> Encoding
(WriteProduct arity a, WriteProduct arity b, ProductSize a, ProductSize b) => GToJSON' Value arity (a :*: b) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value arity a0 -> (a :*: b) a0 -> Value
ToJSON a => GToJSON' Value arity (K1 i a :: Type -> Type) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value arity a0 -> K1 i a a0 -> Value
(ToJSON1 f, GToJSON' Encoding One g) => GToJSON' Encoding One (f :.: g) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Encoding One a -> (f :.: g) a -> Encoding
(ToJSON1 f, GToJSON' Value One g) => GToJSON' Value One (f :.: g) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods gToJSON :: Options -> ToArgs Value One a -> (f :.: g) a -> Value
FromPairs Value (DList Pair) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods fromPairs :: DList Pair -> Value
value ~ Value => KeyValue Value (KeyMap value) | Constructs a singleton `KeyMap`. For calling functions that demand an `Object` for constructing objects. To be used in conjunction with `mconcat`. Prefer to use `object` where possible.
Instance details Defined in Data.Aeson.Types.ToJSON Methods (.=) :: ToJSON v => Key -> v -> KeyMap value # explicitToField :: (v -> Value) -> Key -> v -> KeyMap value #
value ~ Value => KeyValueOmit Value (KeyMap value) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods (.?=) :: ToJSON v => Key -> v -> KeyMap value # explicitToFieldOmit :: (v -> Bool) -> (v -> Value) -> Key -> v -> KeyMap value #
v ~ Value => KeyValuePair v (DList Pair) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods pair :: Key -> v -> DList Pair
(key ~ Key, value ~ Value) => KeyValue Value (key, value) |
Instance details Defined in Data.Aeson.Types.ToJSON Methods (.=) :: ToJSON v => Key -> v -> (key, value) # explicitToField :: (v -> Value) -> Key -> v -> (key, value) #
type Rep Value |
Instance details Defined in Data.Aeson.Types.Internal type Rep Value = D1 ('MetaData "Value" "Data.Aeson.Types.Internal" "aeson-2.2.3.0-7XnCskwqBum1iz93aA1K0B" 'False) ((C1 ('MetaCons "Object" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Object)) :+: (C1 ('MetaCons "Array" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Array)) :+: C1 ('MetaCons "String" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)))) :+: (C1 ('MetaCons "Number" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Scientific)) :+: (C1 ('MetaCons "Bool" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)) :+: C1 ('MetaCons "Null" 'PrefixI 'False) (U1 :: Type -> Type))))

data Parser a #

A JSON parser. N.B. This might not fit your usual understanding of "parser". Instead you might like to think of `Parser` as a "parse result", i.e. a parser to which the input has already been applied.

#### Instances

Instances details

Alternative Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods empty :: Parser a # (<|>) :: Parser a -> Parser a -> Parser a # some :: Parser a -> Parser [a] # many :: Parser a -> Parser [a] #
Applicative Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods pure :: a -> Parser a # (<*>) :: Parser (a -> b) -> Parser a -> Parser b # liftA2 :: (a -> b -> c) -> Parser a -> Parser b -> Parser c # (*>) :: Parser a -> Parser b -> Parser b # (<*) :: Parser a -> Parser b -> Parser a #
Functor Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods fmap :: (a -> b) -> Parser a -> Parser b # (<$) :: a -> Parser b -> Parser a #
Monad Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods (>>=) :: Parser a -> (a -> Parser b) -> Parser b # (>>) :: Parser a -> Parser b -> Parser b # return :: a -> Parser a #
MonadPlus Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods mzero :: Parser a # mplus :: Parser a -> Parser a -> Parser a #
MonadFail Parser |
Instance details Defined in Data.Aeson.Types.Internal Methods fail :: String -> Parser a #
MonadFix Parser | Since: aeson-2.1.0.0
Instance details Defined in Data.Aeson.Types.Internal Methods mfix :: (a -> Parser a) -> Parser a #
Monoid (Parser a) |
Instance details Defined in Data.Aeson.Types.Internal Methods mempty :: Parser a # mappend :: Parser a -> Parser a -> Parser a # mconcat :: [Parser a] -> Parser a #
Semigroup (Parser a) |
Instance details Defined in Data.Aeson.Types.Internal Methods (<>) :: Parser a -> Parser a -> Parser a # sconcat :: NonEmpty (Parser a) -> Parser a # stimes :: Integral b => b -> Parser a -> Parser a #

type Object = KeyMap Value #

A JSON "object" (key/value map).

type Array = Vector Value #

A JSON "array" (sequence).

data ParseException #

Constructors

NonScalarKey |
UnknownAlias |
Fields _anchorName :: AnchorName
UnexpectedEvent |
Fields _received :: Maybe Event _expected :: Maybe Event
InvalidYaml (Maybe YamlException) |
MultipleDocuments |
AesonException String |
OtherParseException SomeException |
NonStringKey JSONPath |
NonStringKeyAlias AnchorName Value |
CyclicIncludes |
LoadSettingsException FilePath ParseException |

#### Instances

Instances details

Exception ParseException # |
Instance details Defined in Data.Yaml.Internal Methods toException :: ParseException -> SomeException # fromException :: SomeException -> Maybe ParseException # displayException :: ParseException -> String # backtraceDesired :: ParseException -> Bool #
Show ParseException # |
Instance details Defined in Data.Yaml.Internal Methods showsPrec :: Int -> ParseException -> ShowS # show :: ParseException -> String # showList :: [ParseException] -> ShowS #

prettyPrintParseException :: ParseException -> String #

Alternative to `show` to display a `ParseException` on the screen. Instead of displaying the data constructors applied to their arguments, a more textual output is returned. For example, instead of printing:

    InvalidYaml (Just (YamlParseException {yamlProblem = "did not find expected ',' or '}'", yamlContext = "while parsing a flow mapping", yamlProblemMark = YamlMark {yamlIndex = 42, yamlLine = 2, yamlColumn = 12}})))

It looks more pleasant to print:

    YAML parse exception at line 2, column 12,
    while parsing a flow mapping:
    did not find expected ',' or '}'

Since 0.8.11

data YamlException #

Constructors

YamlException String |
YamlParseException | problem, context, index, position line, position column
Fields yamlProblem :: String yamlContext :: String yamlProblemMark :: YamlMark

#### Instances

Instances details

Exception YamlException |
Instance details Defined in Text.Libyaml Methods toException :: YamlException -> SomeException # fromException :: SomeException -> Maybe YamlException # displayException :: YamlException -> String # backtraceDesired :: YamlException -> Bool #
Show YamlException |
Instance details Defined in Text.Libyaml Methods showsPrec :: Int -> YamlException -> ShowS # show :: YamlException -> String # showList :: [YamlException] -> ShowS #

data YamlMark #

The pointer position

Constructors

YamlMark |
Fields yamlIndex :: Int yamlLine :: Int yamlColumn :: Int

#### Instances

Instances details

Show YamlMark |
Instance details Defined in Text.Libyaml Methods showsPrec :: Int -> YamlMark -> ShowS # show :: YamlMark -> String # showList :: [YamlMark] -> ShowS #

# Constructors and accessors

object :: [Pair] -> Value #

Create a `Value` from a list of name/value `Pair`s. If duplicate keys arise, later keys and their associated values win.

array :: [Value] -> Value #

Construct a new `Value` from a list of `Value`s.

(.=) :: (KeyValue e kv, ToJSON v) => Key -> v -> kv infixr 8 #

(.:) :: FromJSON a => Object -> Key -> Parser a #

Retrieve the value associated with the given key of an `Object`. The result is `empty` if the key is not present or the value cannot be converted to the desired type.

This accessor is appropriate if the key and value must be present in an object for it to be valid. If the key and value are optional, use `.:?` instead.

(.:?) :: FromJSON a => Object -> Key -> Parser (Maybe a) #

Retrieve the value associated with the given key of an `Object`. The result is `Nothing` if the key is not present or if its value is `Null`, or `empty` if the value cannot be converted to the desired type.

This accessor is most useful if the key and value can be absent from an object without affecting its validity. If the key and value are mandatory, use `.:` instead.

(.!=) :: Parser (Maybe a) -> a -> Parser a #

Helper for use in combination with `.:?` to provide default values for optional JSON object fields.

This combinator is most useful if the key and value can be absent from an object without affecting its validity and we know a default value to assign in that case. If the key and value are mandatory, use `.:` instead.

Example usage:

     v1 <- o .:? "opt_field_with_dfl" .!= "default_val"
     v2 <- o .:  "mandatory_field"
     v3 <- o .:? "opt_field2"

## With helpers (since 0.8.23)

withObject :: String -> (Object -> Parser a) -> Value -> Parser a #

``withObject` name f value` applies `f` to the `Object` when `value` is an `Object` and fails otherwise.

#### Error message example

    withObject "MyType" f (String "oops")
    -- Error: "parsing MyType failed, expected Object, but encountered String"

withText :: String -> (Text -> Parser a) -> Value -> Parser a #

``withText` name f value` applies `f` to the `Text` when `value` is a `String` and fails otherwise.

#### Error message example

    withText "MyType" f Null
    -- Error: "parsing MyType failed, expected String, but encountered Null"

withArray :: String -> (Array -> Parser a) -> Value -> Parser a #

``withArray` expected f value` applies `f` to the `Array` when `value` is an `Array` and fails otherwise.

#### Error message example

    withArray "MyType" f (String "oops")
    -- Error: "parsing MyType failed, expected Array, but encountered String"

withScientific :: String -> (Scientific -> Parser a) -> Value -> Parser a #

``withScientific` name f value` applies `f` to the `Scientific` number when `value` is a `Number` and fails using `typeMismatch` otherwise.

Warning: If you are converting from a scientific to an unbounded type such as `Integer` you may want to add a restriction on the size of the exponent (see `withBoundedScientific`) to prevent malicious input from filling up the memory of the target system.

#### Error message example

    withScientific "MyType" f (String "oops")
    -- Error: "parsing MyType failed, expected Number, but encountered String"

withBool :: String -> (Bool -> Parser a) -> Value -> Parser a #

``withBool` expected f value` applies `f` to the `Bool` when `value` is a `Boolean` and fails otherwise.

#### Error message example

    withBool "MyType" f (String "oops")
    -- Error: "parsing MyType failed, expected Boolean, but encountered String"

# Parsing

parseMonad :: MonadFail m => (a -> Parser b) -> a -> m b #

Deprecated: With the MonadFail split, this function is going to be removed in the future. Please migrate to parseEither.

parseEither :: (a -> Parser b) -> a -> Either String b #

Run a `Parser` with an `Either` result type. If the parse fails, the `Left` payload will contain an error message.

parseMaybe :: (a -> Parser b) -> a -> Maybe b #

Run a `Parser` with a `Maybe` result type.

# Classes

class ToJSON a where #

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.)

Minimal complete definition

Nothing

Methods

toJSON :: a -> Value #

Convert a Haskell value to a JSON-friendly intermediate type.

default toJSON :: (Generic a, GToJSON' Value Zero (Rep a)) => a -> Value #

toEncoding :: a -> Encoding #

Encode a Haskell value as JSON.

The default implementation of this method creates an intermediate `Value` using `toJSON`. This provides source-level compatibility for people upgrading from older versions of this library, but obviously offers no performance advantage.

To benefit from direct encoding, you must provide an implementation for this method. The easiest way to do so is by having your types implement `Generic` using the `DeriveGeneric` extension, and then have GHC generate a method body as follows.

    instance ToJSON Coord where
        toEncoding = genericToEncoding defaultOptions

toJSONList :: [a] -> Value #

toEncodingList :: [a] -> Encoding #

omitField :: a -> Bool #

Defines when it is acceptable to omit a field of this type from a record. Used by `(`.?=`)` operator, and Generics and TH deriving with ``omitNothingFields` = True`.

Since: aeson-2.2.0.0

#### Instances

Instances details

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

class FromJSON a where #

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

Minimal complete definition

Nothing

Methods

parseJSON :: Value -> Parser a #

default parseJSON :: (Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a #

parseJSONList :: Value -> Parser [a] #

omittedField :: Maybe a #

Default value for optional fields. Used by `(`.:?=`)` operator, and Generics and TH deriving with ``allowOmittedFields` = True` (default).

Since: aeson-2.2.0.0

#### Instances

Instances details

FromJSON Key |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Key # parseJSONList :: Value -> Parser [Key] # omittedField :: Maybe Key #
FromJSON DotNetTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DotNetTime # parseJSONList :: Value -> Parser [DotNetTime] # omittedField :: Maybe DotNetTime #
FromJSON Value |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Value # parseJSONList :: Value -> Parser [Value] # omittedField :: Maybe Value #
FromJSON IntSet |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser IntSet # parseJSONList :: Value -> Parser [IntSet] # omittedField :: Maybe IntSet #
FromJSON Void |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Void # parseJSONList :: Value -> Parser [Void] # omittedField :: Maybe Void #
FromJSON All | Since: aeson-2.2.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser All # parseJSONList :: Value -> Parser [All] # omittedField :: Maybe All #
FromJSON Any | Since: aeson-2.2.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Any # parseJSONList :: Value -> Parser [Any] # omittedField :: Maybe Any #
FromJSON Version |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Version # parseJSONList :: Value -> Parser [Version] # omittedField :: Maybe Version #
FromJSON CTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CTime # parseJSONList :: Value -> Parser [CTime] # omittedField :: Maybe CTime #
FromJSON Int16 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int16 # parseJSONList :: Value -> Parser [Int16] # omittedField :: Maybe Int16 #
FromJSON Int32 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int32 # parseJSONList :: Value -> Parser [Int32] # omittedField :: Maybe Int32 #
FromJSON Int64 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int64 # parseJSONList :: Value -> Parser [Int64] # omittedField :: Maybe Int64 #
FromJSON Int8 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int8 # parseJSONList :: Value -> Parser [Int8] # omittedField :: Maybe Int8 #
FromJSON Word16 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word16 # parseJSONList :: Value -> Parser [Word16] # omittedField :: Maybe Word16 #
FromJSON Word32 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word32 # parseJSONList :: Value -> Parser [Word32] # omittedField :: Maybe Word32 #
FromJSON Word64 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word64 # parseJSONList :: Value -> Parser [Word64] # omittedField :: Maybe Word64 #
FromJSON Word8 |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word8 # parseJSONList :: Value -> Parser [Word8] # omittedField :: Maybe Word8 #
FromJSON Ordering |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Ordering # parseJSONList :: Value -> Parser [Ordering] # omittedField :: Maybe Ordering #
FromJSON URI | Since: aeson-2.2.0.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser URI # parseJSONList :: Value -> Parser [URI] # omittedField :: Maybe URI #
FromJSON Scientific |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Scientific # parseJSONList :: Value -> Parser [Scientific] # omittedField :: Maybe Scientific #
FromJSON Text |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Text # parseJSONList :: Value -> Parser [Text] # omittedField :: Maybe Text #
FromJSON Text |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Text # parseJSONList :: Value -> Parser [Text] # omittedField :: Maybe Text #
FromJSON ShortText | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser ShortText # parseJSONList :: Value -> Parser [ShortText] # omittedField :: Maybe ShortText #
FromJSON CalendarDiffDays |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CalendarDiffDays # parseJSONList :: Value -> Parser [CalendarDiffDays] # omittedField :: Maybe CalendarDiffDays #
FromJSON Day |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Day # parseJSONList :: Value -> Parser [Day] # omittedField :: Maybe Day #
FromJSON Month |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Month # parseJSONList :: Value -> Parser [Month] # omittedField :: Maybe Month #
FromJSON Quarter |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Quarter # parseJSONList :: Value -> Parser [Quarter] # omittedField :: Maybe Quarter #
FromJSON QuarterOfYear |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser QuarterOfYear # parseJSONList :: Value -> Parser [QuarterOfYear] # omittedField :: Maybe QuarterOfYear #
FromJSON DayOfWeek |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser DayOfWeek # parseJSONList :: Value -> Parser [DayOfWeek] # omittedField :: Maybe DayOfWeek #
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 # parseJSONList :: Value -> Parser [DiffTime] # omittedField :: Maybe DiffTime #
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 # parseJSONList :: Value -> Parser [NominalDiffTime] # omittedField :: Maybe NominalDiffTime #
FromJSON SystemTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser SystemTime # parseJSONList :: Value -> Parser [SystemTime] # omittedField :: Maybe SystemTime #
FromJSON UTCTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser UTCTime # parseJSONList :: Value -> Parser [UTCTime] # omittedField :: Maybe UTCTime #
FromJSON CalendarDiffTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser CalendarDiffTime # parseJSONList :: Value -> Parser [CalendarDiffTime] # omittedField :: Maybe CalendarDiffTime #
FromJSON LocalTime |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser LocalTime # parseJSONList :: Value -> Parser [LocalTime] # omittedField :: Maybe LocalTime #
FromJSON TimeOfDay |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser TimeOfDay # parseJSONList :: Value -> Parser [TimeOfDay] # omittedField :: Maybe TimeOfDay #
FromJSON ZonedTime | Supported string formats: `YYYY-MM-DD HH:MMZ` `YYYY-MM-DD HH:MM:SSZ` `YYYY-MM-DD HH:MM:SS.SSSZ` 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 # parseJSONList :: Value -> Parser [ZonedTime] # omittedField :: Maybe ZonedTime #
FromJSON UUID |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser UUID # parseJSONList :: Value -> Parser [UUID] # omittedField :: Maybe UUID #
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 # parseJSONList :: Value -> Parser [Integer] # omittedField :: Maybe Integer #
FromJSON Natural |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Natural # parseJSONList :: Value -> Parser [Natural] # omittedField :: Maybe Natural #
FromJSON () |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser () # parseJSONList :: Value -> Parser [()] # omittedField :: Maybe () #
FromJSON Bool |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Bool # parseJSONList :: Value -> Parser [Bool] # omittedField :: Maybe Bool #
FromJSON Char |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Char # parseJSONList :: Value -> Parser [Char] # omittedField :: Maybe Char #
FromJSON Double |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Double # parseJSONList :: Value -> Parser [Double] # omittedField :: Maybe Double #
FromJSON Float |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Float # parseJSONList :: Value -> Parser [Float] # omittedField :: Maybe Float #
FromJSON Int |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Int # parseJSONList :: Value -> Parser [Int] # omittedField :: Maybe Int #
FromJSON Word |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser Word # parseJSONList :: Value -> Parser [Word] # omittedField :: Maybe Word #
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) # parseJSONList :: Value -> Parser [KeyMap v] # omittedField :: Maybe (KeyMap v) #
FromJSON a => FromJSON (First a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (First a) # parseJSONList :: Value -> Parser [First a] # omittedField :: Maybe (First a) #
FromJSON a => FromJSON (Last a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Last a) # parseJSONList :: Value -> Parser [Last a] # omittedField :: Maybe (Last a) #
FromJSON a => FromJSON (Max a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Max a) # parseJSONList :: Value -> Parser [Max a] # omittedField :: Maybe (Max a) #
FromJSON a => FromJSON (Min a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Min a) # parseJSONList :: Value -> Parser [Min a] # omittedField :: Maybe (Min a) #
FromJSON a => FromJSON (WrappedMonoid a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (WrappedMonoid a) # parseJSONList :: Value -> Parser [WrappedMonoid a] # omittedField :: Maybe (WrappedMonoid a) #
FromJSON a => FromJSON (IntMap a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (IntMap a) # parseJSONList :: Value -> Parser [IntMap a] # omittedField :: Maybe (IntMap a) #
FromJSON a => FromJSON (Seq a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Seq a) # parseJSONList :: Value -> Parser [Seq a] # omittedField :: Maybe (Seq a) #
(Ord a, FromJSON a) => FromJSON (Set a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Set a) # parseJSONList :: Value -> Parser [Set a] # omittedField :: Maybe (Set a) #
FromJSON v => FromJSON (Tree v) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Tree v) # parseJSONList :: Value -> Parser [Tree v] # omittedField :: Maybe (Tree v) #
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) # parseJSONList :: Value -> Parser [Fix f] # omittedField :: Maybe (Fix f) #
(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) # parseJSONList :: Value -> Parser [Mu f] # omittedField :: Maybe (Mu f) #
(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) # parseJSONList :: Value -> Parser [Nu f] # omittedField :: Maybe (Nu f) #
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) # parseJSONList :: Value -> Parser [DNonEmpty a] # omittedField :: Maybe (DNonEmpty a) #
FromJSON a => FromJSON (DList a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (DList a) # parseJSONList :: Value -> Parser [DList a] # omittedField :: Maybe (DList a) #
FromJSON a => FromJSON (NonEmpty a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (NonEmpty a) # parseJSONList :: Value -> Parser [NonEmpty a] # omittedField :: Maybe (NonEmpty a) #
FromJSON a => FromJSON (Identity a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Identity a) # parseJSONList :: Value -> Parser [Identity a] # omittedField :: Maybe (Identity a) #
FromJSON a => FromJSON (First a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (First a) # parseJSONList :: Value -> Parser [First a] # omittedField :: Maybe (First a) #
FromJSON a => FromJSON (Last a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Last a) # parseJSONList :: Value -> Parser [Last a] # omittedField :: Maybe (Last a) #
FromJSON a => FromJSON (Down a) | Since: aeson-2.2.0.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Down a) # parseJSONList :: Value -> Parser [Down a] # omittedField :: Maybe (Down a) #
FromJSON a => FromJSON (Dual a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Dual a) # parseJSONList :: Value -> Parser [Dual a] # omittedField :: Maybe (Dual a) #
FromJSON a => FromJSON (Product a) | Since: aeson-2.2.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Product a) # parseJSONList :: Value -> Parser [Product a] # omittedField :: Maybe (Product a) #
FromJSON a => FromJSON (Sum a) | Since: aeson-2.2.3.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Sum a) # parseJSONList :: Value -> Parser [Sum a] # omittedField :: Maybe (Sum a) #
(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) # parseJSONList :: Value -> Parser [Generically a] # omittedField :: Maybe (Generically a) #
(FromJSON a, Integral a) => FromJSON (Ratio a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Ratio a) # parseJSONList :: Value -> Parser [Ratio a] # omittedField :: Maybe (Ratio a) #
FromJSON a => FromJSON (Array a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Array a) # parseJSONList :: Value -> Parser [Array a] # omittedField :: Maybe (Array a) #
(Prim a, FromJSON a) => FromJSON (PrimArray a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (PrimArray a) # parseJSONList :: Value -> Parser [PrimArray a] # omittedField :: Maybe (PrimArray a) #
FromJSON a => FromJSON (SmallArray a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (SmallArray a) # parseJSONList :: Value -> Parser [SmallArray a] # omittedField :: Maybe (SmallArray a) #
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) # parseJSONList :: Value -> Parser [Maybe a] # omittedField :: Maybe (Maybe a) #
(Eq a, Hashable a, FromJSON a) => FromJSON (HashSet a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (HashSet a) # parseJSONList :: Value -> Parser [HashSet a] # omittedField :: Maybe (HashSet a) #
FromJSON a => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) # parseJSONList :: Value -> Parser [Vector a] # omittedField :: Maybe (Vector a) #
(Prim a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) # parseJSONList :: Value -> Parser [Vector a] # omittedField :: Maybe (Vector a) #
(Storable a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) # parseJSONList :: Value -> Parser [Vector a] # omittedField :: Maybe (Vector a) #
(Vector Vector a, FromJSON a) => FromJSON (Vector a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Vector a) # parseJSONList :: Value -> Parser [Vector a] # omittedField :: Maybe (Vector a) #
FromJSON a => FromJSON (Maybe a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Maybe a) # parseJSONList :: Value -> Parser [Maybe a] # omittedField :: Maybe (Maybe a) #
FromJSON a => FromJSON (Solo a) | Since: aeson-2.0.2.0
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Solo a) # parseJSONList :: Value -> Parser [Solo a] # omittedField :: Maybe (Solo a) #
FromJSON a => FromJSON [a] |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser [a] # parseJSONList :: Value -> Parser [[a]] # omittedField :: Maybe [a] #
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) # parseJSONList :: Value -> Parser [Fixed a] # omittedField :: Maybe (Fixed a) #
(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) # parseJSONList :: Value -> Parser [Map k v] # omittedField :: Maybe (Map k v) #
(FromJSON a, FromJSON b) => FromJSON (Either a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Either a b) # parseJSONList :: Value -> Parser [Either a b] # omittedField :: Maybe (Either a b) #
FromJSON (Proxy a) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Proxy a) # parseJSONList :: Value -> Parser [Proxy a] # omittedField :: Maybe (Proxy a) #
(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) # parseJSONList :: Value -> Parser [Either a b] # omittedField :: Maybe (Either a b) #
(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) # parseJSONList :: Value -> Parser [These a b] # omittedField :: Maybe (These a b) #
(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) # parseJSONList :: Value -> Parser [Pair a b] # omittedField :: Maybe (Pair a b) #
(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) # parseJSONList :: Value -> Parser [These a b] # omittedField :: Maybe (These a b) #
(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) # parseJSONList :: Value -> Parser [HashMap k v] # omittedField :: Maybe (HashMap k v) #
(FromJSON a, FromJSON b) => FromJSON (a, b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (a, b) # parseJSONList :: Value -> Parser [(a, b)] # omittedField :: Maybe (a, b) #
FromJSON a => FromJSON (Const a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Const a b) # parseJSONList :: Value -> Parser [Const a b] # omittedField :: Maybe (Const a b) #
FromJSON b => FromJSON (Tagged a b) |
Instance details Defined in Data.Aeson.Types.FromJSON Methods parseJSON :: Value -> Parser (Tagged a b) # parseJSONList :: Value -> Parser [Tagged a b] # omittedField :: Maybe (Tagged a b) #
(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) # parseJSONList :: Value -> Parser [These1 f g a] # omittedField :: Maybe (These1 f g a) #
(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) # parseJSONList :: Value -> Parser [(a, b, c)] # omittedField :: Maybe (a, b, c) #
(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) # parseJSONList :: Value -> Parser [Product f g a] # omittedField :: Maybe (Product f g a) #
(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) # parseJSONList :: Value -> Parser [Sum f g a] # omittedField :: Maybe (Sum f g a) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d)] # omittedField :: Maybe (a, b, c, d) #
(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) # parseJSONList :: Value -> Parser [Compose f g a] # omittedField :: Maybe (Compose f g a) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e)] # omittedField :: Maybe (a, b, c, d, e) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f)] # omittedField :: Maybe (a, b, c, d, e, f) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g)] # omittedField :: Maybe (a, b, c, d, e, f, g) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h)] # omittedField :: Maybe (a, b, c, d, e, f, g, h) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j, k) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j, k, l) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j, k, l, m) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m, n)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j, k, l, m, n) #
(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) # parseJSONList :: Value -> Parser [(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)] # omittedField :: Maybe (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) #

# Custom encoding

isSpecialString :: Text -> Bool #

Determine whether a string must be quoted in YAML and can't appear as plain text. Useful if you want to use `setStringStyle`.

Since: 0.10.2.0

data EncodeOptions #

Since: 0.10.2.0

defaultEncodeOptions :: EncodeOptions #

Since: 0.10.2.0

defaultStringStyle :: StringStyle #

Since: 0.11.2.0

setStringStyle :: (Text -> (Tag, Style)) -> EncodeOptions -> EncodeOptions #

Set the string style in the encoded YAML. This is a function that decides for each string the type of YAML string to output.

WARNING: You must ensure that special strings (like `"yes"`/`"no"`/`"null"`/`"1234"`) are not encoded with the `Plain` style, because then they will be decoded as boolean, null or numeric values. You can use `isSpecialString` to detect them.

By default, strings are encoded as follows:

- Any string containing a newline character uses the `Literal` style
- Otherwise, any special string (see `isSpecialString`) uses `SingleQuoted`
- Otherwise, use `Plain`

Since: 0.10.2.0

setFormat :: FormatOptions -> EncodeOptions -> EncodeOptions #

Set the encoding formatting for the encoded YAML. By default, this is `defaultFormatOptions`.

Since: 0.10.2.0

data FormatOptions #

Contains options relating to the formatting (indendation, width) of the YAML output.

Since: libyaml-0.10.2.0

defaultFormatOptions :: FormatOptions #

Since: libyaml-0.10.2.0

setWidth :: Maybe Int -> FormatOptions -> FormatOptions #

Set the maximum number of columns in the YAML output, or `Nothing` for infinite. By default, the limit is 80 characters.

Since: libyaml-0.10.2.0

# Deprecated

decode :: FromJSON a => ByteString -> Maybe a #

Deprecated: Please use decodeEither or decodeThrow, which provide information on how the decode failed

decodeFile :: FromJSON a => FilePath -> IO (Maybe a) #

Deprecated: Please use decodeFileEither, which does not confused type-directed and runtime exceptions.

decodeEither :: FromJSON a => ByteString -> Either String a #

Deprecated: Please use decodeEither' or decodeThrow, which provide more useful failures