Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- module Data.Aeson
- (.?) :: FromJSON a => Value -> Quick -> Maybe a
- (.!) :: FromJSON a => Value -> Quick -> a
- extract :: FromJSON a => Quick -> Value -> Parser a
- (.%) :: ToJSON a => Quick -> a -> Value
- build :: ToJSON a => Quick -> a -> Either String Value
- data Quick
- parseQuick :: Text -> Either String Quick
- quick :: QuasiQuoter
- jsonlit :: QuasiQuoter
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
(Value
,Int
, [Value
]) extractHobbyist = (.?
"{name,age,hobbies:[{name}]}")
module Data.Aeson
(.?) :: FromJSON a => Value -> Quick -> 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 => Quick -> 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}]"
QuasiQuoter for a structure, provides compile time checking ie:
>>>
val .! [quick|{foo,bar}|]