| Copyright | (c) Colin Woodbury 2015-2024 (c) Edward Kmett 2013-2014 (c) Paul Wilson 2012 |
|---|---|
| License | BSD3 |
| Maintainer | Colin Woodbury <colin@fosskers.ca> |
| 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
- _Integral :: (AsNumber t, Integral a) => Traversal' t a
- nonNull :: Traversal' Value Value
- class AsNumber t => AsValue t where
- key :: AsValue t => Key -> 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
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
Instances
| AsNumber Value Source # | |
| AsNumber ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Number :: Traversal' ByteString Scientific Source # _Double :: Traversal' ByteString Double Source # _Integer :: Traversal' ByteString Integer Source # | |
| AsNumber ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Number :: Traversal' ByteString Scientific Source # _Double :: Traversal' ByteString Double Source # _Integer :: Traversal' ByteString Integer Source # | |
| AsNumber Scientific Source # | |
| AsNumber Text Source # | |
| AsNumber Text Source # | |
| AsNumber String Source # | |
_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
Objects and Arrays
class AsNumber 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
_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
_Object :: Traversal' t (KeyMap Value) Source #
>>>"{\"a\": {}, \"b\": null}" ^? key "a" . _ObjectJust (fromList [])
>>>"{\"a\": {}, \"b\": null}" ^? key "b" . _ObjectNothing
Instances
| AsValue Value Source # | |
| AsValue ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' ByteString Value Source # _String :: Traversal' ByteString Text Source # _Bool :: Traversal' ByteString Bool Source # _Null :: Traversal' ByteString () Source # _Object :: Traversal' ByteString (KeyMap Value) Source # _Array :: Traversal' ByteString (Vector Value) Source # | |
| AsValue ByteString Source # | |
Defined in Lens.Micro.Aeson Methods _Value :: Traversal' ByteString Value Source # _String :: Traversal' ByteString Text Source # _Bool :: Traversal' ByteString Bool Source # _Null :: Traversal' ByteString () Source # _Object :: Traversal' ByteString (KeyMap Value) Source # _Array :: Traversal' ByteString (Vector Value) Source # | |
| AsValue Text Source # | |
| AsValue Text Source # | |
| AsValue String Source # | |
Defined in Lens.Micro.Aeson | |
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 #
_JSON is a Traversal from something containing JSON
to something encoded in that structure.