aeson-via-0.1.1: Wrappers to derive-via Aeson ToJSON/FromJSON typeclasses
Safe HaskellNone
LanguageHaskell2010

AesonVia

Description

Wrappers to control generic ToJSON and FromJSON derivation with deriving-via. See the test for example definitions and their encoding.

Synopsis

Documentation

newtype AesonRecord a Source #

Generic deriving ToJSON/FromJSON via this removes the common field name prefix in the encoding.

Constructors

AesonRecord 

Fields

Instances

Instances details
(HasJSONOptions (AesonRecord a), Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (AesonRecord a) Source # 
Instance details

Defined in AesonVia

(HasJSONOptions (AesonRecord a), Generic a, GFromJSON Zero (Rep a)) => FromJSON (AesonRecord a) Source # 
Instance details

Defined in AesonVia

HasJSONOptions (AesonRecord a) Source # 
Instance details

Defined in AesonVia

newtype AesonNewtype n o Source #

Generic deriving ToJSON/FromJSON via this yields an encoding equivalent to the wrapped type.

Constructors

AesonNewtype 

Fields

Instances

Instances details
(Newtype n, o ~ O n, ToJSON o) => ToJSON (AesonNewtype n o) Source # 
Instance details

Defined in AesonVia

(Newtype n, o ~ O n, FromJSON o) => FromJSON (AesonNewtype n o) Source # 
Instance details

Defined in AesonVia

HasJSONOptions (AesonNewtype n o) Source # 
Instance details

Defined in AesonVia

newtype AesonTag a Source #

Generic deriving ToJSON/FromJSON via this uses HasTagPrefix to turn Bounded Enum datatypes into enumerated strings.

Constructors

AesonTag 

Fields

Instances

Instances details
(HasJSONOptions (AesonTag a), Generic a, GToJSON Zero (Rep a), GToEncoding Zero (Rep a)) => ToJSON (AesonTag a) Source # 
Instance details

Defined in AesonVia

(HasJSONOptions (AesonTag a), Generic a, GFromJSON Zero (Rep a)) => FromJSON (AesonTag a) Source # 
Instance details

Defined in AesonVia

HasTagPrefix a => HasJSONOptions (AesonTag a) Source # 
Instance details

Defined in AesonVia

class HasJSONOptions a where Source #

Mostly an internal class directing constructor/field conversion.

Instances

Instances details
HasJSONOptions (AesonRecord a) Source # 
Instance details

Defined in AesonVia

HasTagPrefix a => HasJSONOptions (AesonTag a) Source # 
Instance details

Defined in AesonVia

HasJSONOptions (AesonNewtype n o) Source # 
Instance details

Defined in AesonVia

class HasTagPrefix a where Source #

Used with AesonTag to define a prefix to be removed from a Bounded Enum. For example, `data Foo = FooBar | FooBaz` would use the prefix Foo to yield converted string values bar and baz.

Methods

getTagPrefix :: Proxy a -> Text Source #