Safe Haskell | None |
---|---|
Language | Haskell2010 |
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 # | |
Defined in Data.Aeson.Quick | |
Show Structure Source # | |
IsString Structure Source # | |
Defined in Data.Aeson.Quick 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 :: * -> *))) |