| Copyright | (c) Colin Woodbury 2015 - 2018 (c) Edward Kmett 2013-2014 (c) Paul Wilson 2012 |
|---|---|
| License | BSD3 |
| Maintainer | Colin Woodbury <colingw@gmail.com> |
| Safe Haskell | None |
| Language | Haskell2010 |
Lens.Micro.Aeson
Description
Traversals for Data.Aeson, based on microlens for minimal dependencies.
For basic manipulation of Aeson values, full Prism functionality isn't
necessary. Since all Prisms are inherently Traversals, we provide Traversals
that mimic the behaviour of the Prisms found in the original Data.Aeson.Lens.
Synopsis
- class AsNumber t where
- _Number :: Traversal' t Scientific
- _Double :: Traversal' t Double
- _Integer :: Traversal' t Integer
- _Integral :: (AsNumber t, Integral a) => Traversal' t a
- nonNull :: Traversal' Value Value
- data Primitive
- = StringPrim !Text
- | NumberPrim !Scientific
- | BoolPrim !Bool
- | NullPrim
- class AsNumber t => AsPrimitive t where
- _Primitive :: Traversal' t Primitive
- _String :: Traversal' t Text
- _Bool :: Traversal' t Bool
- _Null :: Traversal' t ()
- class AsPrimitive t => AsValue t where
- _Value :: Traversal' t Value
- _Object :: Traversal' t (HashMap Text Value)
- _Array :: Traversal' t (Vector Value)
- key :: AsValue t => Text -> Traversal' t Value
- members :: AsValue t => Traversal' t Value
- nth :: AsValue t => Int -> Traversal' t Value
- values :: AsValue t => Traversal' t Value
- class AsJSON t where
- _JSON :: (FromJSON a, ToJSON a) => Traversal' t a
Numbers
class AsNumber t where Source #
Traverse into various number types.
Minimal complete definition
Nothing
Methods
_Number :: Traversal' t Scientific Source #
>>>"[1, \"x\"]" ^? nth 0 . _NumberJust 1.0
>>>"[1, \"x\"]" ^? nth 1 . _NumberNothing
default _Number :: AsPrimitive t => Traversal' t Scientific Source #
_Double :: Traversal' t Double Source #
Traversal into an Double over a Value, Primitive or Scientific
>>>"[10.2]" ^? nth 0 . _DoubleJust 10.2
_Integer :: Traversal' t Integer Source #
Traversal into an Integer over a Value, Primitive or Scientific
>>>"[10]" ^? nth 0 . _IntegerJust 10
>>>"[10.5]" ^? nth 0 . _IntegerJust 10
>>>"42" ^? _IntegerJust 42
Instances
_Integral :: (AsNumber t, Integral a) => Traversal' t a Source #
Access Integer Values as Integrals.
>>>"[10]" ^? nth 0 . _IntegralJust 10
>>>"[10.5]" ^? nth 0 . _IntegralJust 10
nonNull :: Traversal' Value Value Source #
Traversal into non-Null values
>>>"{\"a\": \"xyz\", \"b\": null}" ^? key "a" . nonNullJust (String "xyz")
>>>"{\"a\": {}, \"b\": null}" ^? key "a" . nonNullJust (Object (fromList []))
>>>"{\"a\": \"xyz\", \"b\": null}" ^? key "b" . nonNullNothing
Primitive
Primitives of Value
Constructors
| StringPrim !Text | |
| NumberPrim !Scientific | |
| BoolPrim !Bool | |
| NullPrim |
Instances
| Eq Primitive Source # | |
| Ord Primitive Source # | |
Defined in Lens.Micro.Aeson | |
| Show Primitive Source # | |
| Generic Primitive Source # | |
| Hashable Primitive Source # | |
Defined in Lens.Micro.Aeson | |
| AsPrimitive Primitive Source # | |
Defined in Lens.Micro.Aeson Methods _Primitive :: Traversal' Primitive Primitive Source # _String :: Traversal' Primitive Text Source # _Bool :: Traversal' Primitive Bool Source # _Null :: Traversal' Primitive () Source # | |
| AsNumber Primitive Source # | |
Defined in Lens.Micro.Aeson Methods _Number :: Traversal' Primitive Scientific Source # _Double :: Traversal' Primitive Double Source # _Integer :: Traversal' Primitive Integer Source # | |
| type Rep Primitive Source # | |
Defined in Lens.Micro.Aeson type Rep Primitive = D1 ('MetaData "Primitive" "Lens.Micro.Aeson" "microlens-aeson-2.3.1-JOFpNb4cb8EAyNpQk10Sm6" 'False) ((C1 ('MetaCons "StringPrim" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "NumberPrim" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Scientific))) :+: (C1 ('MetaCons "BoolPrim" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool)) :+: C1 ('MetaCons "NullPrim" 'PrefixI 'False) (U1 :: Type -> Type))) | |
class AsNumber t => AsPrimitive t where Source #
Traverse into various JSON primitives.
Minimal complete definition
Nothing
Methods
_Primitive :: Traversal' t Primitive Source #
>>>"[1, \"x\", null, true, false]" ^? nth 0 . _PrimitiveJust (NumberPrim 1.0)
>>>"[1, \"x\", null, true, false]" ^? nth 1 . _PrimitiveJust (StringPrim "x")
>>>"[1, \"x\", null, true, false]" ^? nth 2 . _PrimitiveJust NullPrim
>>>"[1, \"x\", null, true, false]" ^? nth 3 . _PrimitiveJust (BoolPrim True)
>>>"[1, \"x\", null, true, false]" ^? nth 4 . _PrimitiveJust (BoolPrim False)
default _Primitive :: AsValue t => Traversal' t Primitive Source #
_String :: Traversal' t Text Source #
>>>"{\"a\": \"xyz\", \"b\": true}" ^? key "a" . _StringJust "xyz"
>>>"{\"a\": \"xyz\", \"b\": true}" ^? key "b" . _StringNothing
_Bool :: Traversal' t Bool Source #
>>>"{\"a\": \"xyz\", \"b\": true}" ^? key "b" . _BoolJust True
>>>"{\"a\": \"xyz\", \"b\": true}" ^? key "a" . _BoolNothing
_Null :: Traversal' t () Source #
>>>"{\"a\": \"xyz\", \"b\": null}" ^? key "b" . _NullJust ()
>>>"{\"a\": \"xyz\", \"b\": null}" ^? key "a" . _NullNothing
Instances
Objects and Arrays
class AsPrimitive t => AsValue t where Source #
Traverse into JSON Objects and Arrays.
Minimal complete definition
Methods
_Value :: Traversal' t Value Source #
Traverse into data that encodes a Value
_Object :: Traversal' t (HashMap Text Value) Source #
>>>"{\"a\": {}, \"b\": null}" ^? key "a" . _ObjectJust (fromList [])
>>>"{\"a\": {}, \"b\": null}" ^? key "b" . _ObjectNothing
_Array :: Traversal' t (Vector Value) Source #
Instances
| AsValue String Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' String Value Source # _Object :: Traversal' String (HashMap Text Value) Source # _Array :: Traversal' String (Vector Value) Source # | |
| AsValue Text Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' Text Value Source # _Object :: Traversal' Text (HashMap Text Value) Source # _Array :: Traversal' Text (Vector Value) Source # | |
| AsValue Text Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' Text Value Source # _Object :: Traversal' Text (HashMap Text0 Value) Source # _Array :: Traversal' Text (Vector Value) Source # | |
| AsValue Value Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' Value Value Source # _Object :: Traversal' Value (HashMap Text Value) Source # _Array :: Traversal' Value (Vector Value) Source # | |
| AsValue ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' ByteString Value Source # _Object :: Traversal' ByteString (HashMap Text Value) Source # _Array :: Traversal' ByteString (Vector Value) Source # | |
| AsValue ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' ByteString Value Source # _Object :: Traversal' ByteString (HashMap Text Value) Source # _Array :: Traversal' ByteString (Vector Value) Source # | |
key :: AsValue t => Text -> Traversal' t Value Source #
members :: AsValue t => Traversal' t Value Source #
A Traversal into Object properties
>>>"{\"a\": 4, \"b\": 7}" ^.. members[Number 4.0,Number 7.0]
>>>"{\"a\": 4, \"b\": 7}" & members . _Number %~ (* 10)"{\"a\":40,\"b\":70}"
nth :: AsValue t => Int -> Traversal' t Value Source #
Like ix, but for Arrays with Int indexes
>>>"[1,2,3]" ^? nth 1Just (Number 2.0)
>>>"{\"a\": 100, \"b\": 200}" ^? nth 1Nothing
>>>"[1,2,3]" & nth 1 .~ Number 20"[1,20,3]"
values :: AsValue t => Traversal' t Value Source #
A Traversal into Array elements
>>>"[1,2,3]" ^.. values[Number 1.0,Number 2.0,Number 3.0]
>>>"[1,2,3]" & values . _Number %~ (* 10)"[10,20,30]"
Decoding
Traverse into actual encoded JSON.
Methods
_JSON :: (FromJSON a, ToJSON a) => Traversal' t a Source #
Instances
| AsJSON String Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' String a Source # | |
| AsJSON Text Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' Text a Source # | |
| AsJSON Text Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' Text a Source # | |
| AsJSON Value Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' Value a Source # | |
| AsJSON ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' ByteString a Source # | |
| AsJSON ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _JSON :: (FromJSON a, ToJSON a) => Traversal' ByteString a Source # | |