| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Aeson.Quick
Synopsis
- module Data.Aeson
- (.?) :: FromJSON a => Value -> Structure -> Maybe a
- (.!) :: FromJSON a => Value -> Structure -> a
- extract :: FromJSON a => Structure -> Value -> Parser a
- (.%) :: ToJSON a => Structure -> a -> Value
- build :: ToJSON a => Structure -> Value -> a -> Value
- data Structure
- parseStructure :: Text -> Either String Structure
Documentation
aeson-quick is a library for terse marshalling of data to and from aeson's
Value.
It works on the observation that by turning objects into tuples inside
the Value, the type system can be employed to do more of the work.
For example, given the JSON:
{ "name": "bob"
, "age": 29
, "hobbies": [{"name": "tennis"}, {"name": "cooking"}]
}You can write:
extractHobbyist ::Value->Maybe(String,Int, [String]) extractHobbyist = (.?"{name,age,hobbies:[{name}]}")
module Data.Aeson
(.?) :: FromJSON a => Value -> Structure -> Maybe a Source #
Extracts instances of FromJSON from a Value
This is a wrapper around extract which does the actual work.
Examples assume FromJSON Foo and FromJSON Bar.
Extract key from object:
>>>value .? "{key}" :: Maybe Foo
Extract list of objects:
>>>value .? "[{key}]" :: Maybe [Foo]
Extract with optional key:
>>>value .? "{key,opt?}" :: Maybe (Foo, Maybe Bar)
(.%) :: ToJSON a => Structure -> a -> Value Source #
Turns data into JSON objects.
This is a wrapper around build which does the actual work.
Build a simple Value:
>>>encode $ "{a}" .% True{\"a\": True}
Build a complex Value:
>>>encode $ "[{a}]" '.%' [True, False]"[{\"a\":true},{\"a\":false}]"
Instances
| Eq Structure Source # | |
| Ord Structure Source # | |
| Show Structure Source # | |
| IsString Structure Source # | |
Defined in Data.Aeson.Quick Methods fromString :: String -> Structure # | |
| Generic Structure Source # | |
| NFData Structure Source # | |
Defined in Data.Aeson.Quick | |
| type Rep Structure Source # | |
Defined in Data.Aeson.Quick type Rep Structure = D1 (MetaData "Structure" "Data.Aeson.Quick" "aeson-quick-0.1.2.1-DSsrtXgxAed6e1JH1TOst6" False) (C1 (MetaCons "Obj" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Text, Bool, Structure)])) :+: (C1 (MetaCons "Arr" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Structure)) :+: C1 (MetaCons "Val" PrefixI False) (U1 :: * -> *))) | |