| Portability | non-portable |
|---|---|
| Stability | experimental |
| Maintainer | Edward Kmett <ekmett@gmail.com> |
| Safe Haskell | Trustworthy |
Control.Lens.Aeson
Contents
Description
- class AsNumber t where
- integralValue :: (AsNumber t, Integral a) => Prism' t a
- nonNull :: Prism' Value Value
- data Primitive
- = StringPrim !Text
- | NumberPrim !Number
- | BoolPrim !Bool
- | NullPrim
- class AsNumber t => AsPrimitive t where
- class AsPrimitive t => AsValue t where
- key :: AsValue t => Text -> Traversal' t Value
- members :: AsValue t => IndexedTraversal' Text t Value
- nth :: AsValue t => Int -> Traversal' t Value
- values :: AsValue t => IndexedTraversal' Int t Value
- class AsJSON t where
Numbers
integralValue :: (AsNumber t, Integral a) => Prism' t aSource
nonNull :: Prism' Value ValueSource
Prism 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 !Number | |
| BoolPrim !Bool | |
| NullPrim |
class AsNumber t => AsPrimitive t whereSource
Methods
_Primitive :: Prism' t PrimitiveSource
>>>"[1, \"x\", null, true, false]" ^? nth 0 . _PrimitiveJust (NumberPrim 1)
>>>"[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)
Objects and Arrays
class AsPrimitive t => AsValue t whereSource
Methods
_Value :: Prism' t ValueSource
>>>"[1,2,3]" ^? _ValueJust (Array (fromList [Number 1,Number 2,Number 3]))
_Object :: Prism' t (HashMap Text Value)Source
>>>"{\"a\": {}, \"b\": null}" ^? key "a" . _ObjectJust fromList []
>>>"{\"a\": {}, \"b\": null}" ^? key "b" . _ObjectNothing
_Array :: Prism' t (Vector Value)Source
>>>"[1,2,3]" ^? _ArrayJust (fromList [Number 1,Number 2,Number 3])
key :: AsValue t => Text -> Traversal' t ValueSource
members :: AsValue t => IndexedTraversal' Text t ValueSource
nth :: AsValue t => Int -> Traversal' t ValueSource
Like ix, but for Arrays with Int indexes
>>>"[1,2,3]" ^? nth 1Just (Number 2)
>>>"\"a\": 100, \"b\": 200}" ^? nth 1Nothing
>>>"[1,2,3]" & nth 1 .~ (Number 20)"[1,20,3]"